1 Index: channels/chan_sip.c |
1 Index: channels/chan_sip.c |
2 diff -Nau channels/chan_sip.c.orig channels/chan_sip.c |
2 diff -Nau channels/chan_sip.c.orig channels/chan_sip.c |
3 --- channels/chan_sip.c.orig 2011-05-23 17:35:28.358543497 +0200 |
3 --- channels/chan_sip.c.orig 2011-05-23 17:35:28.358543497 +0200 |
4 +++ channels/chan_sip.c 2011-05-23 17:57:05.948534524 +0200 |
4 +++ channels/chan_sip.c 2011-05-23 17:57:05.948534524 +0200 |
5 @@ -29733,6 +29733,7 @@ |
5 @@ -30388,6 +30388,7 @@ |
6 \todo Fix this function so that we wait for reply to the REFER and |
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. |
7 react to errors, denials or other issues the other end might have. |
8 */ |
8 */ |
9 +/* MSvB: Paramater dest may be SIPS encoded, having '@' before domain */ |
9 +/* MSvB: Paramater dest may be SIPS encoded, having '@' before domain */ |
10 static int sip_sipredirect(struct sip_pvt *p, const char *dest) |
10 static int sip_sipredirect(struct sip_pvt *p, const char *dest) |
11 { |
11 { |
12 char *cdest; |
12 char *cdest; |
13 @@ -29741,7 +29742,7 @@ |
13 @@ -30396,7 +30397,7 @@ |
14 cdest = ast_strdupa(dest); |
14 cdest = ast_strdupa(dest); |
15 |
15 |
16 extension = strsep(&cdest, "@"); |
16 extension = strsep(&cdest, "@"); |
17 - domain = cdest; |
17 - domain = cdest; |
18 + domain = strsep(&cdest, ":"); /* MSvB: Could begin with '@' if SIPS */ |
18 + domain = strsep(&cdest, ":"); /* MSvB: Could begin with '@' if SIPS */ |
19 if (ast_strlen_zero(extension)) { |
19 if (ast_strlen_zero(extension)) { |
20 ast_log(LOG_ERROR, "Missing mandatory argument: extension\n"); |
20 ast_log(LOG_ERROR, "Missing mandatory argument: extension\n"); |
21 return 0; |
21 return 0; |
22 @@ -29773,7 +29774,14 @@ |
22 @@ -30428,7 +30429,14 @@ |
23 } |
23 } |
24 } |
24 } |
25 |
25 |
26 - ast_string_field_build(p, our_contact, "Transfer <sip:%s@%s>", extension, domain); |
26 - ast_string_field_build(p, our_contact, "Transfer <sip:%s@%s>", extension, domain); |
27 + if (domain && *domain == '@') { |
27 + if (domain && *domain == '@') { |