summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua/pjsua_inv.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjsip/src/pjsua/pjsua_inv.c')
-rw-r--r--pjsip/src/pjsua/pjsua_inv.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/pjsip/src/pjsua/pjsua_inv.c b/pjsip/src/pjsua/pjsua_inv.c
index 7c6dbf26..6f9607b5 100644
--- a/pjsip/src/pjsua/pjsua_inv.c
+++ b/pjsip/src/pjsua/pjsua_inv.c
@@ -80,6 +80,7 @@ pj_status_t pjsua_invite(const char *cstr_dest_uri,
inv_data = pj_pool_zalloc( dlg->pool, sizeof(struct pjsua_inv_data));
inv_data->inv = inv;
dlg->mod_data[pjsua.mod.id] = inv_data;
+ inv->mod_data[pjsua.mod.id] = inv_data;
/* Set dialog Route-Set: */
@@ -221,6 +222,7 @@ pj_bool_t pjsua_inv_on_incoming(pjsip_rx_data *rdata)
inv_data = pj_pool_zalloc(dlg->pool, sizeof(struct pjsua_inv_data));
inv_data->inv = inv;
dlg->mod_data[pjsua.mod.id] = inv_data;
+ inv->mod_data[pjsua.mod.id] = inv_data;
pj_list_push_back(&pjsua.inv_list, inv_data);
@@ -345,3 +347,25 @@ void pjsua_inv_on_media_update(pjsip_inv_session *inv, pj_status_t status)
PJ_LOG(3,(THIS_FILE,"Media has been started successfully"));
}
}
+
+
+/*
+ * Terminate all calls.
+ */
+void pjsua_inv_shutdown()
+{
+ struct pjsua_inv_data *inv_data, *next;
+
+ inv_data = pjsua.inv_list.next;
+ while (inv_data != &pjsua.inv_list) {
+ pjsip_tx_data *tdata;
+
+ next = inv_data->next;
+
+ if (pjsip_inv_end_session(inv_data->inv, 410, NULL, &tdata)==0)
+ pjsip_inv_send_msg(inv_data->inv, tdata, NULL);
+
+ inv_data = next;
+ }
+}
+