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.

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

mercurial