[Asterisk-code-review] chan sip: Do not change IP address in SDP origin line (o=) i... (asterisk[13])
Jenkins2
asteriskteam at digium.com
Thu Sep 7 13:05:42 CDT 2017
Jenkins2 has submitted this change and it was merged. ( https://gerrit.asterisk.org/6419 )
Change subject: chan_sip: Do not change IP address in SDP origin line (o=) in SIP reINVITE
......................................................................
chan_sip: Do not change IP address in SDP origin line (o=) in SIP reINVITE
If directmedia=yes is configured, when call is answered, Asterisk sends reINVITE
to both parties to set up media path directly between the endpoints.
In this reINVITE msg SDP origin line (o=) contains IP address of endpoint
instead of IP of asterisk. This behavior violates RFC3264, sec 8:
"When issuing an offer that modifies the session,
the "o=" line of the new SDP MUST be identical to that in the
previous SDP, except that the version in the origin field MUST
increment by one from the previous SDP."
This patch assures IP address of Asterisk is always sent in
SDP origin line.
ASTERISK-17540
Reported by: saghul
Change-Id: I533a047490c43dcff32eeca8378b2ba02345b64e
---
M channels/chan_sip.c
1 file changed, 3 insertions(+), 2 deletions(-)
Approvals:
Joshua Colp: Looks good to me, but someone else must approve
Kevin Harwell: Looks good to me, approved
Jenkins2: Approved for Submit
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index b19c669..097c550 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -13512,12 +13512,13 @@
get_our_media_address(p, needvideo, needtext, &addr, &vaddr, &taddr, &dest, &vdest, &tdest);
+ /* We don't use dest here but p->ourip because address in o= field must not change in reINVITE */
snprintf(owner, sizeof(owner), "o=%s %d %d IN %s %s\r\n",
ast_strlen_zero(global_sdpowner) ? "-" : global_sdpowner,
p->sessionid, p->sessionversion,
- (ast_sockaddr_is_ipv6(&dest) && !ast_sockaddr_is_ipv4_mapped(&dest)) ?
+ (ast_sockaddr_is_ipv6(&p->ourip) && !ast_sockaddr_is_ipv4_mapped(&p->ourip)) ?
"IP6" : "IP4",
- ast_sockaddr_stringify_addr_remote(&dest));
+ ast_sockaddr_stringify_addr_remote(&p->ourip));
snprintf(connection, sizeof(connection), "c=IN %s %s\r\n",
(ast_sockaddr_is_ipv6(&dest) && !ast_sockaddr_is_ipv4_mapped(&dest)) ?
--
To view, visit https://gerrit.asterisk.org/6419
To unsubscribe, visit https://gerrit.asterisk.org/settings
Gerrit-Project: asterisk
Gerrit-Branch: 13
Gerrit-MessageType: merged
Gerrit-Change-Id: I533a047490c43dcff32eeca8378b2ba02345b64e
Gerrit-Change-Number: 6419
Gerrit-PatchSet: 3
Gerrit-Owner: Vitezslav Novy <a1 at vnovy.net>
Gerrit-Reviewer: Jenkins2
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Kevin Harwell <kharwell at digium.com>
Gerrit-Reviewer: Vitezslav Novy <a1 at vnovy.net>
Gerrit-Reviewer: Walter Doekes <walter+asterisk at wjd.nu>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20170907/cdbc2c8b/attachment.html>
More information about the asterisk-code-review
mailing list