[commit] r10825 - in freeswitch/trunk/libs/sofia-sip: . libsofia-sip-ua/nua
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@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;
participants (1)
-
FreeSWITCH SVN