[asterisk-bugs] [JIRA] (ASTERISK-23997) Fix for ICE nat

Matt Jordan (JIRA) noreply at issues.asterisk.org
Mon Jul 7 09:34:56 CDT 2014


     [ https://issues.asterisk.org/jira/browse/ASTERISK-23997?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Matt Jordan updated ASTERISK-23997:
-----------------------------------

    Description: 
sipml5 does not work trougth NAT becouse it's can connect to second candidate port if ice is on. You have small logic bug. 
1. You have 2 candidates - port X and port Y.
2. Y = X+1. 
3. Also you have ICE in reply to client: X and Y + 1. Y already +1! 
Result: In ICE answer you have X and X+2.

Its wrong. Port before NAT and after NAT must be some!

before patch:
{code}
a=candidate:Had86137 1 UDP 2130706431 10.216.97.55 54982 typ host
a=candidate:S5bc2e2f0 1 UDP 1694498815 91.194.226.240 54982 typ srflx
a=candidate:Had86137 2 UDP 2130706430 10.216.97.55 54983 typ host
a=candidate:S5bc2e2f0 2 UDP 1694498814 91.194.226.240 54984 typ srflx
{code}

After:
{code}
a=candidate:Had86137 1 UDP 2130706431 10.216.97.55 54982 typ host
a=candidate:S5bc2e2f0 1 UDP 1694498815 91.194.226.240 54982 typ srflx
a=candidate:Had86137 2 UDP 2130706430 10.216.97.55 54983 typ host
a=candidate:S5bc2e2f0 2 UDP 1694498814 91.194.226.240 54983 typ srflx
{code}

Patch:
\[EDIT\]: mjordan

We cannot accept patches inline. Please attach the patch in unified diff format after signing a license agreement.

  was:
sipml5 does not work trougth NAT becouse it's can connect to second candidate port if ice is on. You have small logic bug. 
1. You have 2 candidates - port X and port Y.
2. Y = X+1. 
3. Also you have ICE in reply to client: X and Y + 1. Y already +1! 
Result: In ICE answer you have X and X+2.

Its wrong. Port before NAT and after NAT must be some!

before patch:
{code}
a=candidate:Had86137 1 UDP 2130706431 10.216.97.55 54982 typ host
a=candidate:S5bc2e2f0 1 UDP 1694498815 91.194.226.240 54982 typ srflx
a=candidate:Had86137 2 UDP 2130706430 10.216.97.55 54983 typ host
a=candidate:S5bc2e2f0 2 UDP 1694498814 91.194.226.240 54984 typ srflx
{code}

After:
{code}
a=candidate:Had86137 1 UDP 2130706431 10.216.97.55 54982 typ host
a=candidate:S5bc2e2f0 1 UDP 1694498815 91.194.226.240 54982 typ srflx
a=candidate:Had86137 2 UDP 2130706430 10.216.97.55 54983 typ host
a=candidate:S5bc2e2f0 2 UDP 1694498814 91.194.226.240 54983 typ srflx
{code}

Patch:

{code}
--- asterisk-11.10.0/channels/chan_sip.c        2014-05-13 21:40:00.000000000 +0400
+++ as
terisk-11.10.0-fixed/channels/chan_sip.c  2014-06-23 17:38:13.338896511 +0400
@@ -12653,7 +12653,7 @@

                if (candidate->type == AST_RTP_ICE_CANDIDATE_TYPE_SRFLX
                        && candidate->id == AST_RTP_ICE_COMPONENT_RTCP) {
-                       ast_str_append(a_buf, 0, "%d typ ", ast_sockaddr_port(&candidate->address) + 1);
+                       ast_str_append(a_buf, 0, "%d typ ", ast_sockaddr_port(&candidate->address) );
                } else {
                        ast_str_append(a_buf, 0, "%s typ ", ast_sockaddr_stringify_port(&candidate->address));
                }
{code}


> Fix for ICE nat
> ---------------
>
>                 Key: ASTERISK-23997
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-23997
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Channels/chan_sip/WebSocket
>    Affects Versions: 11.10.0
>            Reporter: Badalian Vyacheslav
>            Severity: Critical
>
> sipml5 does not work trougth NAT becouse it's can connect to second candidate port if ice is on. You have small logic bug. 
> 1. You have 2 candidates - port X and port Y.
> 2. Y = X+1. 
> 3. Also you have ICE in reply to client: X and Y + 1. Y already +1! 
> Result: In ICE answer you have X and X+2.
> Its wrong. Port before NAT and after NAT must be some!
> before patch:
> {code}
> a=candidate:Had86137 1 UDP 2130706431 10.216.97.55 54982 typ host
> a=candidate:S5bc2e2f0 1 UDP 1694498815 91.194.226.240 54982 typ srflx
> a=candidate:Had86137 2 UDP 2130706430 10.216.97.55 54983 typ host
> a=candidate:S5bc2e2f0 2 UDP 1694498814 91.194.226.240 54984 typ srflx
> {code}
> After:
> {code}
> a=candidate:Had86137 1 UDP 2130706431 10.216.97.55 54982 typ host
> a=candidate:S5bc2e2f0 1 UDP 1694498815 91.194.226.240 54982 typ srflx
> a=candidate:Had86137 2 UDP 2130706430 10.216.97.55 54983 typ host
> a=candidate:S5bc2e2f0 2 UDP 1694498814 91.194.226.240 54983 typ srflx
> {code}
> Patch:
> \[EDIT\]: mjordan
> We cannot accept patches inline. Please attach the patch in unified diff format after signing a license agreement.



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list