para_recv: handle EAGAIN on non-blocking socket
authorGerrit Renker <grenker@cscs.ch>
Thu, 25 Mar 2010 16:43:22 +0000 (17:43 +0100)
committerAndre Noll <maan@systemlinux.org>
Thu, 25 Mar 2010 16:43:22 +0000 (17:43 +0100)
commite5b21a60d783f22886a8671b7be444f1e1205c14
treea07eef3c014d19ff23de730e5302f020056cf8d6
parent39f0303d96983d62b6f5dcdd453ff05f7874a49d
para_recv: handle EAGAIN on non-blocking socket

Checking whether the non-blocking socket is readable is not sufficient
to guarantee that EAGAIN is not encountered on the non-blocking socket,
the following was observed in the middle of a UDP/FEC stream:

Mar 24 17:12:44:0533 audi (0) decode_group: writing group 2784 (4232/4374 decoded data bytes)
Mar 24 17:12:44:0710 audi (0) get_time_string: slot 0: 32:42 [94:49] (26%/127:31)
Mar 24 17:12:44:0710 audi (2) btr_remove_node: removing btr node udp from buffer tree
Mar 24 17:12:44:0710 audi (1) unregister_task: unregistering udp receiver node (Resource temporarily unavailable)

The patch fixes the problem by not interpreting the case "data not
yet ready" as an error, but as a temporary condition.
dccp_recv.c
udp_recv.c