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