]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-6890 #please test
authorAnthony Minessale <anthm@freeswitch.org>
Wed, 5 Nov 2014 00:31:39 +0000 (18:31 -0600)
committerAnthony Minessale <anthm@freeswitch.org>
Wed, 5 Nov 2014 00:31:44 +0000 (18:31 -0600)
libs/sofia-sip/.update
libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c

index fb3ae1977ec7032087bd7cda89e8e4ac9b7be436..cc65611429dea8d9aa5a1df5bf7e150f62f19044 100644 (file)
@@ -1 +1 @@
-Fri Oct 31 13:48:09 CDT 2014
+Tue Nov  4 18:30:40 CST 2014
index 933d76249e327ab49f70861b623983b3b76c082d..c589722ebdf74faca4a2ecf9114476bbd30c7931 100644 (file)
@@ -1543,38 +1543,48 @@ static void nua_session_usage_refresh(nua_handle_t *nh,
   nua_session_usage_t *ss = NUA_DIALOG_USAGE_PRIVATE(du);
   nua_client_request_t const *cr = du->du_cr;
   nua_server_request_t const *sr;
+  
+  SU_DEBUG_3(("nua(%p): Checking Session Refresh\n", (void *)nh));
 
   if (ss->ss_state >= nua_callstate_terminating ||
       /* INVITE is in progress or being authenticated */
-      nua_client_request_in_progress(cr))
-    return;
+      nua_client_request_in_progress(cr)) {
+         SU_DEBUG_3(("nua(%p): client has a request in progress\n", (void *)nh));
+         return;
+  }
 
   /* UPDATE has been queued */
-  for (cr = ds->ds_cr; cr; cr = cr->cr_next)
-    if (cr->cr_method == sip_method_update)
-      return;
+  for (cr = ds->ds_cr; cr; cr = cr->cr_next) {
+         if (cr->cr_method == sip_method_update) {
+                 SU_DEBUG_3(("nua(%p): client has an update queued\n", (void *)nh));
+                 return;
+         }
+  }
 
   /* INVITE or UPDATE in progress on server side */
-  for (sr = ds->ds_sr; sr; sr = sr->sr_next)
+  for (sr = ds->ds_sr; sr; sr = sr->sr_next) {
     if (sr->sr_usage == du &&
-       (sr->sr_method == sip_method_invite ||
-        sr->sr_method == sip_method_update))
-      return;
+               (sr->sr_method == sip_method_invite ||
+                sr->sr_method == sip_method_update)) {
+               SU_DEBUG_3(("nua(%p): client has an INVITE OR UPDATE in progress\n", (void *)nh));
+               return;
+       }
+  }
 
   if (ss->ss_timer->refresher == nua_remote_refresher) {
     SU_DEBUG_3(("nua(%p): session almost expired, sending BYE before timeout.\n", (void *)nh));
     ss->ss_reason = "SIP;cause=408;text=\"Session timeout\"";
     nua_stack_bye(nh->nh_nua, nh, nua_r_bye, NULL);
     return;
-  }
-  else if (NH_PGET(nh, update_refresh)) {
-    nua_stack_update(nh->nh_nua, nh, nua_r_update, NULL);
-  }
-  else if (du->du_cr) {
-    nua_client_resend_request(du->du_cr, 0);
-  }
-  else {
-    nua_stack_invite(nh->nh_nua, nh, nua_r_invite, NULL);
+  } else if (NH_PGET(nh, update_refresh)) {
+         SU_DEBUG_3(("nua(%p): STACK UPDATE\n", (void *)nh));
+         nua_stack_update(nh->nh_nua, nh, nua_r_update, NULL);
+  } else if (du->du_cr && du->du_cr->cr_method == sip_method_invite) {
+         SU_DEBUG_3(("nua(%p): RESEND REQUEST\n", (void *)nh));
+         nua_client_resend_request(du->du_cr, 0);
+  } else {
+         SU_DEBUG_3(("nua(%p): STACK INVITE\n", (void *)nh));
+         nua_stack_invite(nh->nh_nua, nh, nua_r_invite, NULL);
   }
 }