]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Receive.pm
Consume all stdin when rcs_receive short-circuits, to avoid git SIPIPE race.
[ikiwiki.git] / IkiWiki / Receive.pm
index c73adfbbb84b34462eaa474ca315570aba85cc44..5908e09f953ad09cb576cae6c956230be497d6df 100644 (file)
@@ -35,10 +35,17 @@ EOF
                        }
                        "u != $uid";
                } @{$config{untrusted_committers}}).
-               ") exit(0);\n";
+               ") {\n";
 
        
        $ret.=<<"EOF";
+                       /* Trusted user.
+                        * Consume all stdin before exiting, as git may
+                        * otherwise be unhappy. */
+                       char buf[256];
+                       while (read(0, &buf, 256) != 0) {}
+                       exit(0);
+               }
                asprintf(&s, "CALLER_UID=%i", u);
                newenviron[i++]=s;
        }