Tue Feb 10 07:03:27 CST 2009 Pekka Pessi <first.last@nokia.com>

* nua_session.c: fixed race condition with ACK
  Ignore-this: 37d3e74b169e8a154b9734dbade74d84
  
  Response message got destroyed after sending ACK if stack was run in
  multithreaded mode.



git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@11872 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Michael Jerris 2009-02-11 17:38:16 +00:00
parent 394cc90bfe
commit 6376b4b705
2 changed files with 7 additions and 2 deletions

View File

@ -1 +1 @@
Wed Feb 11 11:37:16 CST 2009 Wed Feb 11 11:38:10 CST 2009

View File

@ -1021,13 +1021,14 @@ static int nua_invite_client_report(nua_client_request_t *cr,
nua_dialog_state_t *ds = nh->nh_ds; nua_dialog_state_t *ds = nh->nh_ds;
nua_dialog_usage_t *du = cr->cr_usage; nua_dialog_usage_t *du = cr->cr_usage;
nua_session_usage_t *ss = nua_dialog_usage_private(du); nua_session_usage_t *ss = nua_dialog_usage_private(du);
msg_t *response = nta_outgoing_getresponse(orq);
unsigned next_state; unsigned next_state;
int error; int error;
nh_referral_respond(nh, status, phrase); /* XXX - restarting after 401/407 */ nh_referral_respond(nh, status, phrase); /* XXX - restarting after 401/407 */
nua_stack_event(nh->nh_nua, nh, nua_stack_event(nh->nh_nua, nh,
nta_outgoing_getresponse(orq), response,
cr->cr_event, cr->cr_event,
status, phrase, status, phrase,
tags); tags);
@ -1049,6 +1050,8 @@ static int nua_invite_client_report(nua_client_request_t *cr,
return 1; return 1;
} }
response = msg_ref_create(response); /* Keep reference to contents of sip */
if (orq != cr->cr_orq && cr->cr_orq) { /* Being restarted */ if (orq != cr->cr_orq && cr->cr_orq) { /* Being restarted */
next_state = nua_callstate_calling; next_state = nua_callstate_calling;
} }
@ -1144,6 +1147,8 @@ static int nua_invite_client_report(nua_client_request_t *cr,
signal_call_state_change(nh, ss, status, phrase, next_state); signal_call_state_change(nh, ss, status, phrase, next_state);
msg_destroy(response);
return 1; return 1;
} }