[Freeswitch-svn] [commit] r9261 - in freeswitch/trunk/libs/sofia-sip: . libsofia-sip-ua/nua
Freeswitch SVN
mikej at freeswitch.org
Tue Aug 12 13:00:19 EDT 2008
Author: mikej
Date: Tue Aug 12 13:00:18 2008
New Revision: 9261
Modified:
freeswitch/trunk/libs/sofia-sip/.update
freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/outbound.c
Log:
Mon Jul 21 13:06:54 EDT 2008 Pekka.Pessi at nokia.com
* outbound.c: destroy response to OPTIONS keepalive only when it is no more used
Modified: freeswitch/trunk/libs/sofia-sip/.update
==============================================================================
--- freeswitch/trunk/libs/sofia-sip/.update (original)
+++ freeswitch/trunk/libs/sofia-sip/.update Tue Aug 12 13:00:18 2008
@@ -1 +1 @@
-Tue Jul 8 00:36:02 EDT 2008
+Tue Aug 12 13:00:08 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 Tue Aug 12 13:00:18 2008
@@ -647,6 +647,11 @@
static int response_to_keepalive_options(outbound_t *ob,
nta_outgoing_t *orq,
sip_t const *sip);
+static int process_response_to_keepalive_options(outbound_t *ob,
+ nta_outgoing_t *orq,
+ sip_t const *sip,
+ int status,
+ char const *phrase);
static void keepalive_timer(su_root_magic_t *root_magic,
su_timer_t *t,
@@ -828,10 +833,6 @@
{
int status = 408;
char const *phrase = sip_408_Request_timeout;
- int binding_check;
- int challenged = 0, credentials = 0;
- msg_t *_reqmsg = nta_outgoing_getrequest(orq);
- sip_t *request = sip_object(_reqmsg); msg_destroy(_reqmsg);
if (sip && sip->sip_status) {
status = sip->sip_status->st_status;
@@ -842,8 +843,26 @@
/* This probably means that we are in trouble. whattodo, whattodo */
}
- if (status < 200)
- return 0;
+ if (status >= 200) {
+ if (orq == ob->ob_keepalive.orq)
+ ob->ob_keepalive.orq = NULL;
+ process_response_to_keepalive_options(ob, orq, sip, status, phrase);
+ nta_outgoing_destroy(orq);
+ }
+
+ return 0;
+}
+
+static int process_response_to_keepalive_options(outbound_t *ob,
+ nta_outgoing_t *orq,
+ sip_t const *sip,
+ int status,
+ char const *phrase)
+{
+ int binding_check;
+ int challenged = 0, credentials = 0;
+ msg_t *_reqmsg = nta_outgoing_getrequest(orq);
+ sip_t *request = sip_object(_reqmsg); msg_destroy(_reqmsg);
if (sip == NULL) {
SU_DEBUG_3(("outbound(%p): keepalive %u %s\n", (void *)ob->ob_owner,
@@ -870,10 +889,6 @@
binding_check = outbound_nat_detect(ob, request, sip);
- if (orq == ob->ob_keepalive.orq)
- ob->ob_keepalive.orq = NULL;
- nta_outgoing_destroy(orq);
-
if (binding_check > 1) {
/* Bindings have changed */
if (outbound_contacts_from_via(ob, sip->sip_via) == 0) {
More information about the Freeswitch-svn
mailing list