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.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/pjsip/src/pjsua/pjsua_inv.c b/pjsip/src/pjsua/pjsua_inv.c
index 5789cbc7..83b2bfff 100644
--- a/pjsip/src/pjsua/pjsua_inv.c
+++ b/pjsip/src/pjsua/pjsua_inv.c
@@ -832,6 +832,13 @@ void pjsua_inv_hangup(struct pjsua_inv_data *inv_session, int code)
return;
}
+ /* pjsip_inv_end_session may return PJ_SUCCESS with NULL
+ * as p_tdata when INVITE transaction has not been answered
+ * with any provisional responses.
+ */
+ if (tdata == NULL)
+ return;
+
status = pjsip_inv_send_msg(inv_session->inv, tdata, NULL);
if (status != PJ_SUCCESS) {
pjsua_perror(THIS_FILE,
@@ -974,8 +981,10 @@ void pjsua_inv_shutdown()
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);
+ if (pjsip_inv_end_session(inv_data->inv, 410, NULL, &tdata)==0) {
+ if (tdata)
+ pjsip_inv_send_msg(inv_data->inv, tdata, NULL);
+ }
inv_data = next;
}