diff options
Diffstat (limited to 'pjsip/src/pjsua-lib/pjsua_call.c')
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_call.c | 12 |
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(); |