aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/mgcp/mgcp.h3
-rw-r--r--src/mgcp/mgcp_protocol.c18
2 files changed, 10 insertions, 11 deletions
diff --git a/include/mgcp/mgcp.h b/include/mgcp/mgcp.h
index 4ad27c0..d5574ed 100644
--- a/include/mgcp/mgcp.h
+++ b/include/mgcp/mgcp.h
@@ -109,6 +109,7 @@ struct mgcp_trunk_config {
int trunk_nr;
int trunk_type;
+ uint32_t last_call_id;
char *audio_name;
int audio_payload;
@@ -163,8 +164,6 @@ struct mgcp_config {
mgcp_realloc realloc_cb;
void *data;
- uint32_t last_call_id;
-
/* trunk handling */
struct mgcp_trunk_config trunk;
struct llist_head trunks;
diff --git a/src/mgcp/mgcp_protocol.c b/src/mgcp/mgcp_protocol.c
index 19e9d4f..d583cee 100644
--- a/src/mgcp/mgcp_protocol.c
+++ b/src/mgcp/mgcp_protocol.c
@@ -91,24 +91,24 @@ static struct msgb *handle_noti_req(struct mgcp_config *cfg, struct msgb *msg);
static void create_transcoder(struct mgcp_endpoint *endp);
static void delete_transcoder(struct mgcp_endpoint *endp);
-static uint32_t generate_call_id(struct mgcp_config *cfg)
+static uint32_t generate_call_id(struct mgcp_trunk_config *tcfg)
{
int i;
/* use the call id */
- ++cfg->last_call_id;
+ ++tcfg->last_call_id;
/* handle wrap around */
- if (cfg->last_call_id == CI_UNUSED)
- ++cfg->last_call_id;
+ if (tcfg->last_call_id == CI_UNUSED)
+ ++tcfg->last_call_id;
/* callstack can only be of size number_of_endpoints */
/* verify that the call id is free, e.g. in case of overrun */
- for (i = 1; i < cfg->trunk.number_endpoints; ++i)
- if (cfg->trunk.endpoints[i].ci == cfg->last_call_id)
- return generate_call_id(cfg);
+ for (i = 1; i < tcfg->number_endpoints; ++i)
+ if (tcfg->endpoints[i].ci == tcfg->last_call_id)
+ return generate_call_id(tcfg);
- return cfg->last_call_id;
+ return tcfg->last_call_id;
}
/*
@@ -577,7 +577,7 @@ static struct msgb *handle_create_con(struct mgcp_config *cfg, struct msgb *msg)
goto error2;
/* assign a local call identifier or fail */
- endp->ci = generate_call_id(cfg);
+ endp->ci = generate_call_id(tcfg);
if (endp->ci == CI_UNUSED)
goto error2;