-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/4380/#review14319
-----------------------------------------------------------



branches/11/main/tcptls.c
<https://reviewboard.asterisk.org/r/4380/#comment24806>

    I know in your case what was returned was EBADF; however, looking at what 
all can be returned by accept (http://linux.die.net/man/2/accept), I'm not sure 
we should continue under other circumstances as well.
    
    * EAGAIN/EWOULDBLOCK - other than we should probably be handling 
EWOULDBLOCK, we should continue, and already do.
    * EBADF - break. The accept isn't going to work ever.
    * ECONNABORTED - if a single connection aborted, we should go back to 
accepting. Continue.
    * EFAULT - break. The addr argument is invalid.
    * EINTR - continue, which we already do.
    * EINVAL - break. If the socket isn't listening for connections, accepting 
again isn't going to matter.
    * EMFILE/ENFILE - break. If we've exceeded our file descriptor limit, 
things are going to go wrong quickly.
    * ENOBUFS, ENOMEM - break. If we've exceeded the socket buffer limits, 
we're again going to run into larger issues.
    * ENOTSOCK/EOPNOTSUPP - break. The file descriptor is not what we thought 
it was.
    * EPROTO - break. I'm not sure why re-trying on a protocol error would be 
expected to succeed.
    
    Given that, I think this could just be written:
    
    if ((errno != EAGAIN) && (errno != EWOULDBLOCK) && (errno != EINTR)) {
        ast_log(LOG_WARNING, "Accept failed: %s (%d)\n", strerror(errno), 
errno);
        break;
    }
    continue;


- Matt Jordan


On Jan. 27, 2015, 2:02 p.m., Kevin Harwell wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/4380/
> -----------------------------------------------------------
> 
> (Updated Jan. 27, 2015, 2:02 p.m.)
> 
> 
> Review request for Asterisk Developers.
> 
> 
> Bugs: ASTERISK-24728
>     https://issues.asterisk.org/jira/browse/ASTERISK-24728
> 
> 
> Repository: Asterisk
> 
> 
> Description
> -------
> 
> While running through some scenarios using chan_sip and tcp a problem would 
> occur that resulted in a flood of bad file descriptor messages on the cli:
> 
> tcptls.c:712 ast_tcptls_server_root: Accept failed: Bad file descriptor
> 
> The message is received because the underlying socket has been closed, so is 
> valid. This is probably happening because unloading of chan_sip is not 
> atomic. That however is outside the scope of this patch. This patch simply 
> stops the logging of multiple occurrences of that message.
> 
> 
> Diffs
> -----
> 
>   branches/11/main/tcptls.c 431188 
> 
> Diff: https://reviewboard.asterisk.org/r/4380/diff/
> 
> 
> Testing
> -------
> 
> This issue was found while doing some testing. Ran those tests again to make 
> sure that the messages no longer consumed the cli and only printed once.
> 
> 
> Thanks,
> 
> Kevin Harwell
> 
>

-- 
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

asterisk-dev mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-dev

Reply via email to