diff options
author | Alexander Traud <pabstraud@compuserve.com> | 2016-10-11 13:55:13 +0200 |
---|---|---|
committer | Alexander Traud <pabstraud@compuserve.com> | 2016-10-11 07:08:49 -0500 |
commit | a859bcb49cc2c60ff2979853aae8c54269287598 (patch) | |
tree | a162944341e3295844d96b1619fb920a354c9f40 /channels/chan_sip.c | |
parent | da78600feba37cf5415eac01b1d4b5cee7bcac3a (diff) |
chan_sip: Support nat=auto_comedia or nat=force_rport,auto_comedia.
In the SIP channel driver chan_sip, auto_comedia was expected to be used in
tandem with auto_force_rport. Or stated differently: Only when auto_force_rport
was chosen (the default), auto_comedia worked. This change allows auto_comedia
to be set independently of the state of (auto_)force_rport. For example,
nat=force_rport,auto_comedia is useful for IPv4/IPv6 Dual Stack deployments
when IPv6 clients are behind a Firewall.
ASTERISK-26457 #close
Change-Id: Ib29d66c6dbb61648e371e01fc36c6978ddae5bc2
Diffstat (limited to 'channels/chan_sip.c')
-rw-r--r-- | channels/chan_sip.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 50183c288..f936bb229 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -30383,9 +30383,10 @@ static struct ast_channel *sip_request_call(const char *type, struct ast_format_ if (p->relatedpeer) { if (!ast_strlen_zero(p->relatedpeer->fullcontact) && !p->natdetected && - (ast_test_flag(&p->flags[2], SIP_PAGE3_NAT_AUTO_RPORT) && !ast_test_flag(&p->flags[0], SIP_NAT_FORCE_RPORT))) { + ((ast_test_flag(&p->flags[2], SIP_PAGE3_NAT_AUTO_RPORT) && !ast_test_flag(&p->flags[0], SIP_NAT_FORCE_RPORT)) || + (ast_test_flag(&p->flags[2], SIP_PAGE3_NAT_AUTO_COMEDIA) && !ast_test_flag(&p->flags[1], SIP_PAGE2_SYMMETRICRTP)))) { /* We need to make an attempt to determine if a peer is behind NAT - if the peer has the auto_force_rport flag set. */ + if the peer has the flags auto_force_rport or auto_comedia set. */ struct ast_sockaddr tmpaddr; __set_address_from_contact(p->relatedpeer->fullcontact, &tmpaddr, 0); |