asterisk/asterisk.patch.xfersips

Fri, 15 Oct 2010 18:46:25 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 15 Oct 2010 18:46:25 +0200
changeset 261
4f973c756446
permissions
-rw-r--r--

Update copyright, file server URL, modify doc and link logic.
Now documentation is installed by default to the correct path,
and QtCreator links against Qt shared libraries instead of Qt
static libraries. This unfortunate change supports Nokia's
unfortunate decision to poorly support static linking in Qt.

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