]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Tue Feb 10 07:03:27 CST 2009 Pekka Pessi <first.last@nokia.com>
authorMichael Jerris <mike@jerris.com>
Wed, 11 Feb 2009 17:38:16 +0000 (17:38 +0000)
committerMichael Jerris <mike@jerris.com>
Wed, 11 Feb 2009 17:38:16 +0000 (17:38 +0000)
  * 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

libs/sofia-sip/.update
libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c

index 61f9d44345dc897ebe89911be9e02ed5965414fa..36a8190d613a89dbc1d0511dfaaa20dd281924e9 100644 (file)
@@ -1 +1 @@
-Wed Feb 11 11:37:16 CST 2009
+Wed Feb 11 11:38:10 CST 2009
index f97116b834bcb50175e41bbca31ad84357ff970a..6257dbaa5996bb10e7357f2879e4e312cae743b5 100644 (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_usage_t *du = cr->cr_usage;
   nua_session_usage_t *ss = nua_dialog_usage_private(du);
+  msg_t *response = nta_outgoing_getresponse(orq);
   unsigned next_state;
   int error;
 
   nh_referral_respond(nh, status, phrase); /* XXX - restarting after 401/407 */
 
   nua_stack_event(nh->nh_nua, nh,
-                 nta_outgoing_getresponse(orq),
+                 response,
                  cr->cr_event,
                  status, phrase,
                  tags);
@@ -1049,6 +1050,8 @@ static int nua_invite_client_report(nua_client_request_t *cr,
     return 1;
   }
 
+  response = msg_ref_create(response); /* Keep reference to contents of sip */
+
   if (orq != cr->cr_orq && cr->cr_orq) {       /* Being restarted */
     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);
 
+  msg_destroy(response);
+
   return 1;
 }