asterisk/asterisk.patch.xfersips

changeset 310
73d852a30c9a
parent 309
2ff4e4701310
child 311
263143ec0fb2
     1.1 --- a/asterisk/asterisk.patch.xfersips	Sun Mar 20 19:27:35 2011 +0100
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,36 +0,0 @@
     1.4 -Index: channels/chan_sip.c
     1.5 -diff -Nau channels/chan_sip.c.orig channels/chan_sip.c
     1.6 ---- channels/chan_sip.c.orig	2009-04-24 00:48:57.000000000 +0200
     1.7 -+++ channels/chan_sip.c	2009-04-24 00:49:21.000000000 +0200
     1.8 -@@ -18771,6 +18771,7 @@
     1.9 - \todo	Fix this function so that we wait for reply to the REFER and
    1.10 - 	react to errors, denials or other issues the other end might have.
    1.11 -  */
    1.12 -+/* MSvB: Paramater dest may be SIPS encoded, having '@@' before host */
    1.13 - static int sip_sipredirect(struct sip_pvt *p, const char *dest)
    1.14 - {
    1.15 - 	char *cdest;
    1.16 -@@ -18780,7 +18781,7 @@
    1.17 - 	cdest = ast_strdupa(dest);
    1.18 - 	
    1.19 - 	extension = strsep(&cdest, "@");
    1.20 --	host = strsep(&cdest, ":");
    1.21 -+	host = strsep(&cdest, ":");		/* MSvB: Could begin with '@' if SIPS */
    1.22 - 	port = strsep(&cdest, ":");
    1.23 - 	if (ast_strlen_zero(extension)) {
    1.24 - 		ast_log(LOG_ERROR, "Missing mandatory argument: extension\n");
    1.25 -@@ -18813,7 +18814,13 @@
    1.26 - 		}
    1.27 - 	}
    1.28 - 
    1.29 --	ast_string_field_build(p, our_contact, "Transfer <sip:%s@%s%s%s>", extension, host, port ? ":" : "", port ? port : "");
    1.30 -+	if (host && *host == '@') {
    1.31 -+		ast_log(LOG_DEBUG, "Decoding TLS incapable Asterisk SIP URI to a standard SIPS URI before redirecting via 302 Moved Temporarily\n");
    1.32 -+		ast_string_field_build(p, our_contact, "Transfer <sips:%s@%s%s%s>", extension, host + 1, port ? ":" : "", port ? port : "");
    1.33 -+    }
    1.34 -+	else
    1.35 -+		ast_string_field_build(p, our_contact, "Transfer <sip:%s@%s%s%s>", extension, host, port ? ":" : "", port ? port : "");
    1.36 -+
    1.37 - 	transmit_response_reliable(p, "302 Moved Temporarily", &p->initreq);
    1.38 - 
    1.39 - 	sip_scheddestroy(p, SIP_TRANS_TIMEOUT);	/* Make sure we stop send this reply. */

mercurial