This is the mail archive of the cygwin mailing list for the Cygwin project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Corinna Vinschen wrote:
On Aug 21 18:16, Christian Franke wrote:Corinna Vinschen wrote (in thread "[ITP] libsuexec 1.0"):Postfix for Cygwin would be *so* nice. Sigh. ...Due to the following problem, Postfix hangs during startup (and blocks any possible "[ITP] postfix ..."): If a AF_UNIX socket is in listen()ing state, a client connect() should succeed immediately. On Cygwin, connect() waits until the server site accept()s the connection. Testcase: ... This is likely because fhandler_socket::af_local_connect() waits for some secret. Sending it in af_local_accept() is too late in this case. Unfortunately the event handling of postfix relies on the correct behavior and there is possibly no easy workaround.Off the top of my head I don't see one inside the Cygwin DLL :(
Complex but may work: A fhandler_socket::listen() on a AF_UNIX/SOCK_STREAM socket starts a thread which accept()s connections, performs the handshake and puts the new socket descs in a queue. fhandler_socket::accept4() then no longer calls accept() but waits for the next entry in the queue.
The problem is that the package exchange at the start of an accept/connect is required to be able to exchange credentials. This in turn is required for getpeereid and the SO_PEERCRED socket option which is utilized at least by sshd.
Easier and may work for Postfix: Add a Cygwin specific socket option like SO_DONT_NEED_PEERCRED which is set immediately after Postfix calls socket(AF_UNIX, SOCK_STREAM). If set, no handshake occurs on connect()/accept(). getpeerid()/SO_PEERCRED should fail then.
Would it help to patch postfix for Cygwin to use a local-only AF_INET socket at this point instead?
Postfix heavily relies on unix domain sockets (see master.cf) so this would possibly be complex. Such a patch would likely not be accepted upstream.
Christian -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |