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. _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"

