summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua-lib/pjsua_call.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjsip/src/pjsua-lib/pjsua_call.c')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_call.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c
index d8cf68ec..638ae3cf 100644
--- a/pjsip/src/pjsua-lib/pjsua_call.c
+++ b/pjsip/src/pjsua-lib/pjsua_call.c
@@ -1100,7 +1100,7 @@ pj_bool_t pjsua_call_on_incoming(pjsip_rx_data *rdata)
unsigned options = 0;
pjsip_inv_session *inv = NULL;
int acc_id;
- pjsua_call *call;
+ pjsua_call *call = NULL;
int call_id = -1;
int sip_err_code = PJSIP_SC_INTERNAL_SERVER_ERROR;
pjmedia_sdp_session *offer=NULL;
@@ -1223,6 +1223,11 @@ pj_bool_t pjsua_call_on_incoming(pjsip_rx_data *rdata)
}
}
+ if (!replaced_dlg) {
+ /* Clone rdata. */
+ pjsip_rx_data_clone(rdata, 0, &call->incoming_data);
+ }
+
/*
* Get which account is most likely to be associated with this incoming
* call. We need the account to find which contact URI to put for
@@ -1637,6 +1642,11 @@ on_return:
if (dlg) {
pjsip_dlg_dec_lock(dlg);
}
+
+ if (call && call->incoming_data) {
+ pjsip_rx_data_free_cloned(call->incoming_data);
+ call->incoming_data = NULL;
+ }
pj_log_pop_indent();
PJSUA_UNLOCK();