Bastien ROUCARIES wrote: > according to postfix source NETBSD seems really strange... Do you know > how to test ? > /* > * The CMSG_LEN send/receive workaround was originally developed for > * OpenBSD 3.6 on SPARC64. After the workaround was verified to not break > * Solaris 8 on SPARC64, it was hard-coded with Postfix 2.3 for all > * platforms because of increasing pressure to work on other things. The > * workaround does nothing for 32-bit systems. > * > * The investigation was reopened with Postfix 2.7 because the workaround > * broke with NetBSD 5.0 on 64-bit architectures. This time it was found > * that OpenBSD <= 4.3 on AMD64 and SPARC64 needed the workaround for > * sending only. The following platforms worked with and without the > * workaround: OpenBSD 4.5 on AMD64 and SPARC64, FreeBSD 7.2 on AMD64, > * Solaris 8 on SPARC64, and Linux 2.6-11 on x86_64. > * > * As this appears to have been an OpenBSD-specific problem, we revert to > * the Postfix 2.2 behavior. Instead of hard-coding the workaround for > * all platforms, we now detect sendmsg() errors at run time and turn on > * the workaround dynamically. > * > * The workaround was made run-time configurable to investigate the > problem > * on multiple platforms. Though set_unix_pass_fd_fix() is over-kill for > * this specific problem, it is left in place so that it can serve as an > * example of how to add run-time configurable workarounds to Postfix. > */
You got this from <http://postfix.sourcearchive.com/documentation/2.7.1/unix__send__fd_8c-source.html>, right? The "workaround" there consists in adding some alignment to the msg_controllen field, for the 64-bit case. But here I am testing on NetBSD/i386, and both CMSG_LEN(sizeof(int)) and CMSG_SPACE(sizeof(int)) are 16. I tried all values 4, 8, 12, ..., 32 for msg_controllen - doesn't help. > > On mingw, I haven't even tried the module. It first requires > > - a 'socketpair' module for the test, > In all the case passing fd is done through socket What do you mean by that? I mean, the test uses the socketpair() function, which mingw doesn't have, so in order to run the test, we must first have socketpair(). Bruno