aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_sip.c
diff options
context:
space:
mode:
authordvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2009-06-23 16:33:18 +0000
committerdvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2009-06-23 16:33:18 +0000
commit9ea5bdb1058a94293acbd58fe91370215cbaeef9 (patch)
tree96b13f9d9d630ad48e1d53fe30264d3cf161c937 /channels/chan_sip.c
parent4e8f5b08797d68bd3159a0b523e7d05184b3aed9 (diff)
Merged revisions 202672 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ................ r202672 | dvossel | 2009-06-23 11:31:30 -0500 (Tue, 23 Jun 2009) | 18 lines Merged revisions 202671 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r202671 | dvossel | 2009-06-23 11:28:46 -0500 (Tue, 23 Jun 2009) | 12 lines MWI NOTIFY contains a wrong URI if Asterisk listens to non-standard port and transport (closes issue #14659) Reported by: klaus3000 Patches: patch_chan_sip_fixMWIuri_1.4.txt uploaded by klaus3000 (license 65) mwi_port-transport_trunk.diff uploaded by dvossel (license 671) Tested by: dvossel, klaus3000 Review: https://reviewboard.asterisk.org/r/288/ ........ ................ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.2@202673 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_sip.c')
-rw-r--r--channels/chan_sip.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 4384d7a42..3ea4644bf 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -10620,14 +10620,29 @@ static int transmit_notify_with_mwi(struct sip_pvt *p, int newmsgs, int oldmsgs,
{
struct sip_request req;
struct ast_str *out = ast_str_alloca(500);
-
+ int ourport = ntohs(p->ourip.sin_port);
+ const char *exten = S_OR(vmexten, default_vmexten);
+
initreqprep(&req, p, SIP_NOTIFY);
add_header(&req, "Event", "message-summary");
add_header(&req, "Content-Type", default_notifymime);
-
ast_str_append(&out, 0, "Messages-Waiting: %s\r\n", newmsgs ? "yes" : "no");
- ast_str_append(&out, 0, "Message-Account: sip:%s@%s\r\n",
- S_OR(vmexten, default_vmexten), S_OR(p->fromdomain, ast_inet_ntoa(p->ourip.sin_addr)));
+
+ if (!ast_strlen_zero(p->fromdomain)) {
+ ast_str_append(&out, 0, "Message-Account: sip:%s@%s\r\n", exten, p->fromdomain);
+ } else if (!sip_standard_port(p->socket.type, ourport)) {
+ if (p->socket.type == SIP_TRANSPORT_UDP) {
+ ast_str_append(&out, 0, "Message-Account: sip:%s@%s:%d\r\n", exten, ast_inet_ntoa(p->ourip.sin_addr), ourport);
+ } else {
+ ast_str_append(&out, 0, "Message-Account: sip:%s@%s:%d;transport=%s\r\n", exten, ast_inet_ntoa(p->ourip.sin_addr), ourport, get_transport(p->socket.type));
+ }
+ } else {
+ if (p->socket.type == SIP_TRANSPORT_UDP) {
+ ast_str_append(&out, 0, "Message-Account: sip:%s@%s\r\n", exten, ast_inet_ntoa(p->ourip.sin_addr));
+ } else {
+ ast_str_append(&out, 0, "Message-Account: sip:%s@%s;transport=%s\r\n", exten, ast_inet_ntoa(p->ourip.sin_addr), get_transport(p->socket.type));
+ }
+ }
/* Cisco has a bug in the SIP stack where it can't accept the
(0/0) notification. This can temporarily be disabled in
sip.conf with the "buggymwi" option */