Summary:ASTERISK-01917: rtp.c gets frequent EAGAIN on rtcp packets
Reporter:cloos-st (cloos-st)Labels:
Date Opened:2004-06-28 21:43:05Date Closed:2011-06-07 14:10:20
Versions:Frequency of
Description:I see frequent EAGAIN results from ast_rtcp_read (which gets called from sip_rtp_read, which gets called from ast_read).

Presumably, if poll(2) (or whichever) sees a packet on the rtcp socket it should be there when * calls recvfrom(2), yes?

My first though was that the error should not be logged if i is EAGAIN, but this begs the question of why there is no data to read when the call is made....

Am I offbase on this?  

(I'm trying to reduce the noise to deal with some Failed to start async wait and outgoing sip auth errors (where auth is by ip) ....)
Comments:By: Mark Spencer (markster) 2004-06-28 23:16:18

If you note the messages for seeing the error on RTP, it's (to the best of my knowledge) only caused when there is a UDP checksum error, and this can be confirmed with ethereal.

By: Mark Spencer (markster) 2004-06-29 10:36:56

I've changed the code to report this as a checksum error to make it clearer.

By: cloos-st (cloos-st) 2004-07-02 15:36:39

I should have read thru the kernel (very nice code to read, but then I've always enjoyed Dave's taste in code) and seen that.

But I have some more info on what we are seeing.  The particular application opens  several manager connections (it seems to predate the async option for originate) and the context they call includes an agi that also sends a command via manager (that part will be going away soon).

The rtp eagains show up everytime the agi exits.  

Any chance the tcp socket is waking up poll(2), but is gone by the time * answers the poll, leaving * to think it were the next socket in the list that woke it up?

By: Digium Subversion (svnbot) 2008-01-15 15:01:17.000-0600

Repository: asterisk
Revision: 3350

U   trunk/channels/chan_sip.c
U   trunk/rtp.c

r3350 | markster | 2008-01-15 15:01:16 -0600 (Tue, 15 Jan 2008) | 2 lines

Report checksum failures as such (bug ASTERISK-1917)