Patch for linux ABI for MSG_NOSIGNAL and out of order tcp packet issue

Don Lewis truckman at FreeBSD.org
Tue Jan 18 11:40:39 PST 2005


On 18 Jan, David Malone wrote:
> On Tue, Jan 18, 2005 at 03:18:42PM -0000, Steven Hartland wrote:
>> The attached patch checks for
>> MSG_NOSIGNAL and if set enables SO_NOSIGPIPE
>> for the duration of send call.
> 
> I just had a quick look at the patch. The patch should probably
> use kern_setsockopt, which will simplify it considerably.
> (kern_setsockopt was introduced to FreeBSD 5 this summer to make
> it easier to do this sort of thing). It would probably also be
> better to do a kern_getsockopt first to find out if SO_NOPIPE is
> set and only turn it off afterwards if it wasn't already on.
> 
>> Im not 100% sure this is the
>> way to do it but have confirmed that the patch works on
>> 5.2.1 so if someone could check and commit it that would
>> be great.
> 
> I guess that it would be even better if we could just pass
> SO_NOPIPE to send, or even implement MSG_NOSIGNAL on FreeBSD,
> but your patch is probably a reasonably start.

That's probably the best solution.  We did the same thing to properly
implement non-blocking I/O on fifos.  Setting and clearing the socket
option for each syscall adds a lot of overhead, and there is also danger
that some other thread could be modifying the option at the same time.



More information about the freebsd-hackers mailing list