--- server/play.c 2008-03-03 22:56:22 +0000
+++ server/play.c 2008-03-09 11:10:46 +0000
@@ -389,8 +390,14 @@
/* np will be the pipe to disorder-normalize */
if(socketpair(PF_UNIX, SOCK_STREAM, 0, np) < 0)
fatal(errno, "error calling socketpair");
+ /* Beware of the Leopard! On OS X 10.5.x, the order of the shutdown
+ * calls here DOES MATTER. If you do the SHUT_WR first then the SHUT_RD
+ * fails iwth "Socket is not connected". I think this is a bug but
+ * provided implementors either don't care about the order or all agree
+ * about the order, choosing the reliable order is an adequate
+ * workaround. */
+ xshutdown(np[1], SHUT_RD); /* decoder writes to np[1] */
xshutdown(np[0], SHUT_WR); /* normalize reads from np[0] */
- xshutdown(np[1], SHUT_RD); /* decoder writes to np[1] */
blocking(np[0]);
blocking(np[1]);
/* Start disorder-normalize */
(no subject)
Date: 2008-03-09 02:15 pm (UTC)(no subject)
Date: 2008-03-09 02:37 pm (UTC)