fixes issue with double "sip:" in header field
authorDavid Vossel <dvossel@digium.com>
Wed, 21 Apr 2010 18:13:36 +0000 (18:13 +0000)
committerDavid Vossel <dvossel@digium.com>
Wed, 21 Apr 2010 18:13:36 +0000 (18:13 +0000)
This is a clear mistake in logic.  Future discussions
about how to avoid having to handle uri's like this
should take place in the future, but this fix needs
to go in for now.

(closes issue #15847)
Reported by: ebroad
Patches:
      doublesip.patch uploaded by ebroad (license 878)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@258305 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index a59d542..a145d0d 100644 (file)
@@ -10518,7 +10518,7 @@ static void initreqprep(struct sip_request *req, struct sip_pvt *p, int sipmetho
        } else {
                if (sipmethod == SIP_NOTIFY && !ast_strlen_zero(p->theirtag)) {
                        /* If this is a NOTIFY, use the From: tag in the subscribe (RFC 3265) */
        } else {
                if (sipmethod == SIP_NOTIFY && !ast_strlen_zero(p->theirtag)) {
                        /* If this is a NOTIFY, use the From: tag in the subscribe (RFC 3265) */
-                       snprintf(to, sizeof(to), "<%s%s>;tag=%s", (!strncasecmp(p->uri, "sip:", 4) ? "sip:" : ""), p->uri, p->theirtag);
+                       snprintf(to, sizeof(to), "<%s%s>;tag=%s", (strncasecmp(p->uri, "sip:", 4) ? "sip:" : ""), p->uri, p->theirtag);
                } else if (p->options && p->options->vxml_url) {
                        /* If there is a VXML URL append it to the SIP URL */
                        snprintf(to, sizeof(to), "<%s>;%s", p->uri, p->options->vxml_url);
                } else if (p->options && p->options->vxml_url) {
                        /* If there is a VXML URL append it to the SIP URL */
                        snprintf(to, sizeof(to), "<%s>;%s", p->uri, p->options->vxml_url);