[Prev][Next][Index][Thread]

Re: UDP/IP Problem



> My guess is that on receiving the first packet, you called something
> which blocked.  Then along came the second packet and there you are
> hosed.  (More precisely: the call to ether_input probably sets
> oskit_freebsd_ipending (which seems to be this weeks name for
> is_softnetpending) but, if you block, you never return from
> ether_input so you never execute the pending software interrupt code
> at the end so oskit_freebsd_ipending is still set when the second
> packet arrives.)

The idea behind using setsockopt to adjust the time before an EWOULDBLOCK
is generated was so that the thread executing the code would only block
for a specific amount of time (I'm using the BSD style, involving
integer-based socket descriptors). Not knowing much about how that
particular area of the oskit works (I'm using the original 0.97), do you
know if is_softnetpending supposed to be cleared if it returns an
EWOULDBLOCK?


Follow-Ups: References: