Subject: Re: OpenVPN
To: None <tech-net@NetBSD.org>
From: der Mouse <mouse@Rodents.Montreal.QC.CA>
List: tech-net
Date: 05/11/2006 09:51:43
>> There is no nonportability here unless they care about portability
>> across the silent API change (which is unlikely) or unless Linux
>> does it gratuitously differently (which is reasonably likely,
>> actually).
> The struct msghdr and function arguments are identical. However,
> OpenVPN does use a flag not defined in NetBSD:
> MSG_NOSIGNAL
> Requests not to send SIGPIPE on errors on stream oriented
> sockets when the other end breaks the connection. The EPIPE
> error is still returned.
> That doesn't look like a showstopper...
Depends on how OpenVPN uses it. But, looking at the code for SIGPIPE
generation, it looks as though this would be dead easy to add to
NetBSD. sendit(), in uipc_syscalls.c, is the only place that I think
needs to be touched:
- if (error == EPIPE)
- psignal(p, SIGPIPE);
+ if ((error == EPIPE) && !(flags & MSG_NOSIGNAL))
+ psignal(p, SIGPIPE);
/~\ The ASCII der Mouse
\ / Ribbon Campaign
X Against HTML mouse@rodents.montreal.qc.ca
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B