[asterisk-bugs] [JIRA] (ASTERISK-27705) chan_iax2: Stops listening for traffic

Friendly Automation (JIRA) noreply at issues.asterisk.org
Thu Jun 14 10:19:54 CDT 2018


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

Friendly Automation closed ASTERISK-27705.
------------------------------------------

    Resolution: Fixed

> chan_iax2: Stops listening for traffic
> --------------------------------------
>
>                 Key: ASTERISK-27705
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-27705
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Channels/chan_iax2
>    Affects Versions: 14.5.0
>         Environment: Fedora 27
>            Reporter: Kirsty Tyerman
>            Assignee: Kirsty Tyerman
>              Labels: patch
>         Attachments: asterisk-iax.patch
>
>
> The chan_iax module in asterisk gets into a state where the module's recv-q keeps increasing and can no longer reach it's iax2 peers. Phone calls to the broken server from remote servers will no longer establish as asterisk can not create the IAX channel.
> *SYMPTOMS*
> Making a call from one server to another server that is no longer responding is still possible as the DUNDi module is still running, so the user can still discover any numbers on the remote server. However when attempting to establish the call, asterisk will complain when trying to dial the IAX channel since the IAX peer is no longer responding.
> In the Asterisk CLI:
> [Feb 2 01:31:10] WARNING[23862][C-00000001]: app_dial.c:2530 dial_exec_full: Unable to create channel of type 'IAX2' (cause 20 - Subscriber absent)
> *RESOLVING*
> * Doing an "iax2 reload" in asterisk will not work because this does not unload and load the module, it just reads in the config file.
> * Doing a "module unload chan_iax2.so" followed by a "module load chan_iax2.so" or a "systemctl stop/start asterisk" will resolve the issue.
> *ISSUE/FIX*
> The iax2 module is not handling timeout and EINTR case properly. Mainly when there is an interupt to the kernel thread. In case of ast_io_wait recieves a signal, or timeout it can be an error or return 0 which eventually escapes the thread loop, so that it cant recieve any data. This then causes the module
> s receive queue to build up on the kernel and stop any communications via iax in asterisk.
> The proposed patch is for the iax module, so that timeout and EINTR does not exit the thread.
> *REPRODUCING*
> 1. Setup two asterisk servers and peer them using iax.
> 2. In our case we were able to easily reproduce the error when we set the timing interface to res_timing_dahdi.so and plugged in our custom DAHDI hardware to the computing platform.
> *ENVIRONMENT*
> Asterisk 14.5.0
> Fedora 27
> Kernel: 4.13.16-302.fc27.x86_64



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



More information about the asterisk-bugs mailing list