Author: mikej Date: Fri May 9 13:47:20 2008 New Revision: 8338 Modified: freeswitch/trunk/libs/sofia-sip/.update freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/outbound.c Log: Wed May 7 15:54:41 EDT 2008 Pekka Pessi <first.last@nokia.com> * outbound.c: fix sofia-sip.org bug #1930055 If the initial REGISTER was not challenged, the natted contact did not get unregistered. Modified: freeswitch/trunk/libs/sofia-sip/.update ============================================================================== --- freeswitch/trunk/libs/sofia-sip/.update (original) +++ freeswitch/trunk/libs/sofia-sip/.update Fri May 9 13:47:20 2008 @@ -1 +1 @@ -Fri May 9 13:46:29 EDT 2008 +Fri May 9 13:47:15 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 Fri May 9 13:47:20 2008 @@ -97,7 +97,7 @@ /** Source of Contact header */ unsigned ob_by_stack:1; /** Self-generated contacts */ - unsigned ob_contacts:1, :0; + unsigned ob_contacts:1; /* The registration state machine. */ /** Initial REGISTER containing ob_rcontact has been sent */ @@ -336,6 +336,14 @@ 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;