Skip to content
Snippets Groups Projects
Commit 5f73ab9f authored by David Vossel's avatar David Vossel
Browse files

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: https://origsvn.digium.com/svn/asterisk/trunk@202672 65c4cc65-6c06-0410-ace0-fbb531ad65f3
parent 0c64f73f
No related branches found
No related tags found
No related merge requests found
...@@ -11044,14 +11044,29 @@ static int transmit_notify_with_mwi(struct sip_pvt *p, int newmsgs, int oldmsgs, ...@@ -11044,14 +11044,29 @@ static int transmit_notify_with_mwi(struct sip_pvt *p, int newmsgs, int oldmsgs,
{ {
struct sip_request req; struct sip_request req;
struct ast_str *out = ast_str_alloca(500); 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); initreqprep(&req, p, SIP_NOTIFY);
add_header(&req, "Event", "message-summary"); add_header(&req, "Event", "message-summary");
add_header(&req, "Content-Type", default_notifymime); 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, "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 /* Cisco has a bug in the SIP stack where it can't accept the
(0/0) notification. This can temporarily be disabled in (0/0) notification. This can temporarily be disabled in
sip.conf with the "buggymwi" option */ sip.conf with the "buggymwi" option */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment