On 28/09/13 00:30, list2 wrote:
> It won't build on OSX.
>
> cc acl.c
> acl.c:2904:23: error: use of undeclared identifier 'MSG_NOSIGNAL'
> r = send(s, arg, len, MSG_NOSIGNAL);
> ^
> 1 error generated.
> make[1]: *** [acl.o] Error 1
> make: *** [all] Error 2
> dnsbureau:exim-4.82_RC1 root#
>
>
> What is the side effect of not using MSG_NOSIGNAL? I could just >
> #define it to 0, but I don't know if this would cause any problems.
Thanks for testing the RC.
The Linux manpage describe the flag as "don't SIGPIPE on
stream-oriented socket when the other end breaks the connection".
Since the socket in use is SOCK_DGRAM it looks like a no-op to me;
probably just habit on the part of the writer, and you could happily
define it to zero.
>
> I think OS X OS X requires SO_NOSIGPIPE instead. This one builds too,
> but I don't know if I'm messing things up.
>
> #ifndef MSG_NOSIGNAL
> #define MSG_NOSIGNAL SO_NOSIGPIPE
> #endif
I'd not use SO_NOSIGPIPE even given the (presumed) similar function;
that will be a socket-option bit and there's no telling what it
might do when used for a send flag.
Unless someone knowing more speaks up I'll remove that flag from
the send call.
--
Cheers,
Jeremy