[Freeswitch-svn] [commit] r10825 - in freeswitch/trunk/libs/sofia-sip: . libsofia-sip-ua/nua
FreeSWITCH SVN
mikej at freeswitch.org
Tue Dec 16 12:28:53 PST 2008
Author: mikej
Date: Tue Dec 16 15:28:53 2008
New Revision: 10825
Log:
Wed Nov 26 13:30:48 CST 2008 Pekka Pessi <first.last at nokia.com>
* outbound.c: silenced warnings
wtf? xxx.
Modified:
freeswitch/trunk/libs/sofia-sip/.update
freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/check_register.c
freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/outbound.c
Modified: freeswitch/trunk/libs/sofia-sip/.update
==============================================================================
--- freeswitch/trunk/libs/sofia-sip/.update (original)
+++ freeswitch/trunk/libs/sofia-sip/.update Tue Dec 16 15:28:53 2008
@@ -1 +1 @@
-Tue Dec 16 14:24:06 CST 2008
+Tue Dec 16 14:28:36 CST 2008
Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/check_register.c
==============================================================================
--- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/check_register.c (original)
+++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/check_register.c Tue Dec 16 15:28:53 2008
@@ -265,6 +265,10 @@
m = s2_wait_for_request(SIP_METHOD_REGISTER);
fail_if(!m);
fail_if(!m->sip->sip_authorization);
+ /* should not unregister the previous contact
+ * as it has not been successfully registered */
+ fail_if(!m->sip->sip_contact);
+ fail_if(m->sip->sip_contact->m_next);
s2_save_register(m);
s2_respond_to(m, NULL,
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 Dec 16 15:28:53 2008
@@ -102,7 +102,7 @@
/* The registration state machine. */
/** Initial REGISTER containing ob_rcontact has been sent */
unsigned ob_registering:1;
- /** 2XX response to REGISTER containg ob_rcontact has been received */
+ /** 2XX response to REGISTER containing ob_rcontact has been received */
unsigned ob_registered:1;
/** The registration has been validated:
* We have successfully sent OPTIONS to ourselves.
@@ -361,14 +361,6 @@
if (ob) {
if (ob->ob_contacts)
*return_current_contact = ob->ob_rcontact;
- else {
- sip_contact_t *contact = *return_current_contact;
- if (contact) {
- if (ob->ob_rcontact)
- msg_header_free_all(ob->ob_home, (msg_header_t*)ob->ob_rcontact);
- ob->ob_rcontact = sip_contact_dup(ob->ob_home, contact);
- }
- }
*return_previous_contact = ob->ob_previous;
}
return 0;
@@ -402,21 +394,25 @@
return 0;
assert(request->sip_request); assert(response->sip_status);
-
- reregister = outbound_check_for_nat(ob, request, response);
- if (reregister)
- return reregister;
status = response->sip_status->st_status;
if (status < 300) {
- if (request->sip_contact && response->sip_contact)
+ if (request->sip_contact && response->sip_contact) {
+ if (ob->ob_rcontact != NULL)
+ msg_header_free(ob->ob_home, (msg_header_t *)ob->ob_rcontact);
+ ob->ob_rcontact = sip_contact_dup(ob->ob_home, request->sip_contact);
ob->ob_registered = ob->ob_registering;
- else
+ } else
ob->ob_registered = 0;
+ }
- if (ob->ob_previous)
- msg_header_free(ob->ob_home, (void *)ob->ob_previous);
+ reregister = outbound_check_for_nat(ob, request, response);
+ if (reregister)
+ return reregister;
+
+ if (ob->ob_previous && status < 300) {
+ msg_header_free(ob->ob_home, (void *)ob->ob_previous);
ob->ob_previous = NULL;
}
@@ -1071,7 +1067,6 @@
{
su_home_t *home = ob->ob_home;
sip_contact_t *rcontact, *dcontact;
- int reg_id = 0;
char reg_id_param[20] = "";
sip_contact_t *previous_previous, *previous_rcontact, *previous_dcontact;
sip_via_t *v, v0[1], *previous_via;
@@ -1110,8 +1105,10 @@
previous_dcontact = ob->ob_dcontact;
previous_via = ob->ob_via;
- if (ob->ob_registering &&
- (reg_id == 0 || ob->ob_info.outbound < outbound_feature_supported))
+ if (ob->ob_registered
+ /* && (ob->ob_reg_id == 0 || ob->ob_info.outbound < outbound_feature_supported)
+ * XXX - multiple connections not yet supported
+ */)
previous_rcontact = NULL, ob->ob_previous = ob->ob_rcontact;
else
previous_rcontact = ob->ob_rcontact, ob->ob_previous = NULL;
More information about the Freeswitch-svn
mailing list