[asterisk-bugs] [JIRA] (ASTERISK-22352) [patch] IAX2 custom qualify timer is not taken into account

Frederic Van Espen (JIRA) noreply at issues.asterisk.org
Tue Feb 11 14:57:04 CST 2014


    [ https://issues.asterisk.org/jira/browse/ASTERISK-22352?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=215146#comment-215146 ] 

Frederic Van Espen edited comment on ASTERISK-22352 at 2/11/14 2:56 PM:
------------------------------------------------------------------------

Hi,

I did not realise that I'm the assignee for this issue. What should I do to move forward with this?

As I said before, I believe there's a misunderstanding going on. The bug is that we are not waiting for at least {{maxms}} for a response to a poke when the peer became unreachable before, but instead we are waiting for {{pokefreqnotok}}. According to the documentation, {{pokefreqnotok}} is the interval in which we will poke the peer when it is LAGGED or UNREACHABLE, but in the code the value is used to schedule the destruction of the IAX poke dialog.

As such, my patch is not an improvement to chan_iax2, but a bug fix which IMO would be a candidate for inclusion to existing release branches. The patch schedules the destruction of the IAX poke dialog to {{maxms}} * 2.

BTW, we've been using this patch on 50ish asterisk 1.8.13.0 installations without any issues since the bug report was created.
                
      was (Author: frederic.ve):
    Hi,

I did not realise that I'm the assignee for this issue. What should I do to move forward with this?

As I said before, I believe there's a misunderstanding going on. The bug is that we are not waiting for at least {{maxms}} for a response to a poke when the peer became unreachable before, but instead we are waiting for {{pokefreqnotok}}. According to the documentation, {{pokefreqnotok}} is the interval in which we will poke the peer when it is LAGGED or UNREACHABLE, but in the code the value is used to schedule the destruction of the IAX poke dialog.

As such, my patch is not an improvement to chan_iax2, but a bug fix which IMO would be a candidate for inclusion to existing release branches. The patch schedules the destruction of the IAX poke dialog to {{maxms}} * 2.
                  
> [patch] IAX2 custom qualify timer is not taken into account
> -----------------------------------------------------------
>
>                 Key: ASTERISK-22352
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-22352
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Channels/chan_iax2
>    Affects Versions: 1.8.23.0
>            Reporter: Frederic Van Espen
>            Assignee: Frederic Van Espen
>            Severity: Minor
>         Attachments: iax_qualify.patch, iax_qualifyv2.patch
>
>
> When I try to use a qualify timer value for an IAX other than the default 2000ms, this value is not taken into account.
> I can reproduce this with this configuration:
> [remote-host]
> type=friend
> host=172.16.6.45
> username=remote-host
> secret=test
> notransfer=yes
> qualify=16000
> qualifyfreqnotok=30000
> disallow=all
> allow=alaw
> allow=ulaw
> allow=ilbc
> auth=md5
> encryption=no
> On remote host I configure a delay of 6000ms:
> ~# tc qdisc add dev eth0 root netem delay 6000ms
> The result in the logs:
> [Aug 21 10:54:58] NOTICE[13318] chan_iax2.c: Peer 'remote-host' is now REACHABLE! Time: 6001
> [Aug 21 10:56:02] NOTICE[13323] chan_iax2.c: Peer 'remote-host' is now UNREACHABLE! Time: 6001
> [Aug 21 10:56:38] NOTICE[13319] chan_iax2.c: Peer 'remote-host' is now REACHABLE! Time: 6001
> [Aug 21 10:57:42] NOTICE[13324] chan_iax2.c: Peer 'remote-host' is now UNREACHABLE! Time: 6001
> [Aug 21 10:58:18] NOTICE[13318] chan_iax2.c: Peer 'remote-host' is now REACHABLE! Time: 5999
> [Aug 21 10:59:22] NOTICE[13325] chan_iax2.c: Peer 'remote-host' is now UNREACHABLE! Time: 5999
> [Aug 21 10:59:58] NOTICE[13319] chan_iax2.c: Peer 'remote-host' is now REACHABLE! Time: 6001
> [Aug 21 11:01:02] NOTICE[13324] chan_iax2.c: Peer 'remote-host' is now UNREACHABLE! Time: 6001
> [Aug 21 11:01:38] NOTICE[13320] chan_iax2.c: Peer 'remote-host' is now REACHABLE! Time: 6001
> [Aug 21 11:02:42] NOTICE[13325] chan_iax2.c: Peer 'remote-host' is now UNREACHABLE! Time: 6001
> [Aug 21 11:03:18] NOTICE[13319] chan_iax2.c: Peer 'remote-host' is now REACHABLE! Time: 6001
> I believe this is due to a mixup in the chan_iax2.c code. When the peer is REACHABLE, the response appears to be expected within the default timer value*2. When it is UNREACHABLE, it uses the peer->pokefreqnotok value. IMO this timer value should be the same, whatever state it is, and the timer value should be peer->maxms.
> I did not test on asterisk 10 or 11, but by looking at the code it appears to be present in those releases as well

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.asterisk.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira



More information about the asterisk-bugs mailing list