asterisk/asterisk.patch.xfersips

Fri, 22 Oct 2010 19:54:57 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 22 Oct 2010 19:54:57 +0200
changeset 281
acad5c9dea5f
permissions
-rw-r--r--

Correct dependencies and use a canonical package name.

     1 Index: channels/chan_sip.c
     2 diff -Nau channels/chan_sip.c.orig channels/chan_sip.c
     3 --- channels/chan_sip.c.orig	2009-04-24 00:48:57.000000000 +0200
     4 +++ channels/chan_sip.c	2009-04-24 00:49:21.000000000 +0200
     5 @@ -18771,6 +18771,7 @@
     6  \todo	Fix this function so that we wait for reply to the REFER and
     7  	react to errors, denials or other issues the other end might have.
     8   */
     9 +/* MSvB: Paramater dest may be SIPS encoded, having '@@' before host */
    10  static int sip_sipredirect(struct sip_pvt *p, const char *dest)
    11  {
    12  	char *cdest;
    13 @@ -18780,7 +18781,7 @@
    14  	cdest = ast_strdupa(dest);
    16  	extension = strsep(&cdest, "@");
    17 -	host = strsep(&cdest, ":");
    18 +	host = strsep(&cdest, ":");		/* MSvB: Could begin with '@' if SIPS */
    19  	port = strsep(&cdest, ":");
    20  	if (ast_strlen_zero(extension)) {
    21  		ast_log(LOG_ERROR, "Missing mandatory argument: extension\n");
    22 @@ -18813,7 +18814,13 @@
    23  		}
    24  	}
    26 -	ast_string_field_build(p, our_contact, "Transfer <sip:%s@%s%s%s>", extension, host, port ? ":" : "", port ? port : "");
    27 +	if (host && *host == '@') {
    28 +		ast_log(LOG_DEBUG, "Decoding TLS incapable Asterisk SIP URI to a standard SIPS URI before redirecting via 302 Moved Temporarily\n");
    29 +		ast_string_field_build(p, our_contact, "Transfer <sips:%s@%s%s%s>", extension, host + 1, port ? ":" : "", port ? port : "");
    30 +    }
    31 +	else
    32 +		ast_string_field_build(p, our_contact, "Transfer <sip:%s@%s%s%s>", extension, host, port ? ":" : "", port ? port : "");
    33 +
    34  	transmit_response_reliable(p, "302 Moved Temporarily", &p->initreq);
    36  	sip_scheddestroy(p, SIP_TRANS_TIMEOUT);	/* Make sure we stop send this reply. */

mercurial