asterisk/asterisk.patch.xfersips

changeset 311
263143ec0fb2
child 347
10bd406e1c51
equal deleted inserted replaced
-1:000000000000 1:6533bde575f1
1 Index: channels/chan_sip.c
2 diff -Nau channels/chan_sip.c.orig channels/chan_sip.c
3 --- channels/chan_sip.c.orig 2011-01-14 18:32:52.000000000 +0100
4 +++ channels/chan_sip.c 2011-03-13 14:32:58.000000000 +0100
5 @@ -27854,6 +27854,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 domain */
10 static int sip_sipredirect(struct sip_pvt *p, const char *dest)
11 {
12 char *cdest;
13 @@ -27862,7 +27863,7 @@
14 cdest = ast_strdupa(dest);
15
16 extension = strsep(&cdest, "@");
17 - domain = strsep(&cdest, ":");
18 + domain = strsep(&cdest, ":"); /* MSvB: Could begin with '@' if SIPS */
19 if (ast_strlen_zero(extension)) {
20 ast_log(LOG_ERROR, "Missing mandatory argument: extension\n");
21 return 0;
22 @@ -27894,7 +27895,14 @@
23 }
24 }
25
26 - ast_string_field_build(p, our_contact, "Transfer <sip:%s@%s>", extension, domain);
27 + if (domain && *domain == '@') {
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>", extension, domain);
30 +
31 + }
32 + else
33 + ast_string_field_build(p, our_contact, "Transfer <sip:%s@%s>", extension, domain);
34 +
35 transmit_response_reliable(p, "302 Moved Temporarily", &p->initreq);
36
37 sip_scheddestroy(p, SIP_TRANS_TIMEOUT); /* Make sure we stop send this reply. */

mercurial