]> git.decadent.org.uk Git - dak.git/commitdiff
gpg.py: set O_NONBLOCK for writing
authorAnsgar Burchardt <ansgar@debian.org>
Fri, 3 Jun 2011 09:55:44 +0000 (09:55 +0000)
committerAnsgar Burchardt <ansgar@debian.org>
Fri, 3 Jun 2011 09:55:44 +0000 (09:55 +0000)
We need O_NONBLOCK as otherwise os.write() would block for large input.

Signed-off-by: Ansgar Burchardt <ansgar@debian.org>
daklib/gpg.py

index 0e080df5a6558164bb259a9b529cc2087dcfa611..62bfe096510453c180acb4fda1f5b80af6581ffa 100644 (file)
@@ -114,6 +114,10 @@ class SignedFile(object):
                     raise GpgException("No valid signature found. (GPG exited with status code %s)\n%s" % (exit_code, self.stderr))
 
     def _do_io(self, read, write):
+        for fd in write.keys():
+            old = fcntl.fcntl(fd, fcntl.F_GETFL)
+            fcntl.fcntl(fd, fcntl.F_SETFL, old | os.O_NONBLOCK)
+
         read_lines = dict( (fd, []) for fd in read )
         write_pos = dict( (fd, 0) for fd in write )