[Freeswitch-svn] [commit] r9418 - in freeswitch/trunk/libs/sofia-sip: . libsofia-sip-ua/nua

Freeswitch SVN mikej at freeswitch.org
Wed Sep 3 14:27:56 EDT 2008


Author: mikej
Date: Wed Sep  3 14:27:56 2008
New Revision: 9418

Modified:
   freeswitch/trunk/libs/sofia-sip/.update
   freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/outbound.c

Log:
Wed Sep  3 13:49:53 EDT 2008  Pekka Pessi <first.last at nokia.com>
  * outbound.c: do not use OPTIONS keepalive by default but on UDP
  
  On TCP, use TCP-level keepalives.



Modified: freeswitch/trunk/libs/sofia-sip/.update
==============================================================================
--- freeswitch/trunk/libs/sofia-sip/.update	(original)
+++ freeswitch/trunk/libs/sofia-sip/.update	Wed Sep  3 14:27:56 2008
@@ -1 +1 @@
-Wed Sep  3 14:27:05 EDT 2008
+Wed Sep  3 14:27:37 EDT 2008

Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/outbound.c
==============================================================================
--- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/outbound.c	(original)
+++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/outbound.c	Wed Sep  3 14:27:56 2008
@@ -77,7 +77,7 @@
     unsigned gruuize:1;		/**< Establish a GRUU */
     unsigned outbound:1;	/**< Try to use outbound */
     unsigned natify:1;		/**< Try to detect NAT */
-    unsigned okeepalive:1;	/**< Connection keepalive with OPTIONS */
+    signed okeepalive:2;	/**< Connection keepalive with OPTIONS */
     unsigned validate:1;	/**< Validate registration with OPTIONS */
     /* How to detect NAT binding or connect to outbound: */
     unsigned use_connect:1;	/**< Use HTTP connect */
@@ -270,7 +270,7 @@
   prefs->gruuize = 1;
   prefs->outbound = 0;
   prefs->natify = 1;
-  prefs->okeepalive = 1;
+  prefs->okeepalive = -1;
   prefs->validate = 1;
   prefs->use_rport = 1;
 
@@ -662,12 +662,18 @@
 			      nta_outgoing_t *register_transaction)
 {
   unsigned interval = 0;
-  int need_to_validate;
+  int need_to_validate, udp;
 
   if (!ob)
     return;
 
-  if (ob->ob_prefs.natify && ob->ob_prefs.okeepalive)
+  udp = ob->ob_via && ob->ob_via->v_protocol == sip_transport_udp;
+
+  if (ob->ob_prefs.natify &&
+      /* On UDP, use OPTIONS keepalive by default */
+      (udp ? ob->ob_prefs.okeepalive != 0
+       /* Otherwise, only if requested */
+       : ob->ob_prefs.okeepalive > 0))
     interval = ob->ob_prefs.interval;
   need_to_validate = ob->ob_prefs.validate && !ob->ob_validated;
 



More information about the Freeswitch-svn mailing list