ewx: (geek)
[personal profile] ewx
--- 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 12:09 pm (UTC)
simont: A picture of me in 2016 (Default)
From: [personal profile] simont
That does seem a bit ick, although it has the saving grace of giving you an excellent excuse to use that comment :-)

JOOI, what's a socketpair with one direction shut down got that a simple pipe hasn't?

(no subject)

Date: 2008-03-09 12:56 pm (UTC)
ext_8103: (Default)
From: [identity profile] ewx.livejournal.com
It lacks the insane PIPE_BUF rules.

(no subject)

Date: 2008-03-09 01:56 pm (UTC)
gerald_duck: (ascii)
From: [personal profile] gerald_duck
On a related note, what's a socketpair with one direction shut down got that a socketpair with both directions still running hasn't?

(no subject)

Date: 2008-03-09 02:33 pm (UTC)
ext_8103: (Default)
From: [identity profile] ewx.livejournal.com
Means you spot errors more quickly if you get the ends back to front l-)

(no subject)

Date: 2008-03-10 11:50 am (UTC)
simont: A picture of me in 2016 (Default)
From: [personal profile] simont
Are those rules impeding something specific you want to do with the pipe/socketpair, or do you just avoid pipes on general principles just in case?

(I always use actual pipes when I want a thing that looks basically like a pipe, and the PIPE_BUF rules have never bitten me yet. I'm curious to know whether I'm being unconscionably reckless or whether you're doing something particularly demanding ;-)

(no subject)

Date: 2008-03-10 02:57 pm (UTC)
ext_8103: (Default)
From: [identity profile] ewx.livejournal.com
It's imaginable that someone's decoder might want to do nonblocking output to that FD, though neither of the shipped decoders do so at the moment.

(no subject)

Date: 2008-03-10 09:33 am (UTC)
From: [identity profile] pjc50.livejournal.com
The sound of one pipe sucking?

(no subject)

Date: 2008-03-10 09:58 am (UTC)
ext_8103: (Default)
From: [identity profile] ewx.livejournal.com
Oh, also, a socketpair with one direction shut down is unidirectional, whereas a pipe will be bidirectional on some systems.

(no subject)

Date: 2008-03-09 02:15 pm (UTC)
From: [identity profile] mstevens.livejournal.com
You spelt "with" wrong in the comment.

(no subject)

Date: 2008-03-09 02:37 pm (UTC)
ext_8103: (Default)
From: [identity profile] ewx.livejournal.com
Oops l-)

November 2025

S M T W T F S
      1
2345678
91011121314 15
1617 181920 2122
23242526272829
30      

Most Popular Tags

Expand Cut Tags

No cut tags