diff --git a/channels/chan_sip.c b/channels/chan_sip.c index bc5dd4f8cf..788a16587a 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -7745,7 +7745,6 @@ static int set_address_from_contact(struct sip_pvt *pvt) /* Work on a copy */ contact = ast_strdupa(pvt->fullcontact); - /* XXX this code is repeated all over */ /* Make sure it's a SIP URL */ if (strncasecmp(contact, "sip:", 4)) { ast_log(LOG_NOTICE, "'%s' is not a valid SIP contact (missing sip:) trying to use anyway\n", contact); @@ -7754,7 +7753,6 @@ static int set_address_from_contact(struct sip_pvt *pvt) /* Ditch arguments */ /* XXX this code is replicated also shortly below */ - contact = strsep(&contact, ";"); /* trim ; and beyond */ /* Grab host */ host = strchr(contact, '@'); @@ -7771,6 +7769,9 @@ static int set_address_from_contact(struct sip_pvt *pvt) } else port = STANDARD_SIP_PORT; + contact = strsep(&contact, ";"); /* trim ; and beyond in username part */ + host = strsep(&host, ";"); /* trim ; and beyond in host/domain part */ + /* XXX This could block for a long time XXX */ /* We should only do this if it's a name, not an IP */ hp = ast_gethostbyname(host, &ahp);