Date: Tue, 18 Jan 2005 11:40:28 -0800 (PST) From: Don Lewis <truckman@FreeBSD.org> To: dwmalone@maths.tcd.ie Cc: freebsd-emulation@FreeBSD.org Subject: Re: Patch for linux ABI for MSG_NOSIGNAL and out of order tcp packet issue Message-ID: <200501181940.j0IJeSul043765@gw.catspoiler.org> In-Reply-To: <20050118191349.GA43822@walton.maths.tcd.ie>
next in thread | previous in thread | raw e-mail | index | archive | help
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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200501181940.j0IJeSul043765>