[asterisk-commits] chan sip: Do not change IP address in SDP origin line (o=) i... (asterisk[15])
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Sep 7 13:36:21 CDT 2017
Joshua Colp has submitted this change and it was merged. ( https://gerrit.asterisk.org/6421 )
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; Approved for Submit
Kevin Harwell: Looks good to me, approved
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index beaa3de..a7b7cfe 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -13526,12 +13526,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/6421
To unsubscribe, visit https://gerrit.asterisk.org/settings
Gerrit-Project: asterisk
Gerrit-Branch: 15
Gerrit-MessageType: merged
Gerrit-Change-Id: I533a047490c43dcff32eeca8378b2ba02345b64e
Gerrit-Change-Number: 6421
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>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-commits/attachments/20170907/b3d2f620/attachment-0001.html>
More information about the asterisk-commits
mailing list