From 498fe90b455e896e306498abd24961fd90a21c67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ulrik=20Sjo=CC=88lin?= Date: Sun, 11 Sep 2011 22:59:37 +0200 Subject: [PATCH] Stabilize repo communication with subprocesses. Make repo use the standard way in python to work with pipes. Communication via pipes to sub processes is done by calling communicate(). This will make repo not hang every now and then. Change-Id: Ibe2c4ecbdbcbe72f0b725ca50d54088e5646fc5d --- git_command.py | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/git_command.py b/git_command.py index d1e0c971..aecda0e4 100644 --- a/git_command.py +++ b/git_command.py @@ -221,26 +221,10 @@ class GitCommand(object): self.stdin = p.stdin def Wait(self): - p = self.process - - if p.stdin: - p.stdin.close() - self.stdin = None - - if p.stdout: - self.stdout = p.stdout.read() - p.stdout.close() - else: - p.stdout = None - - if p.stderr: - self.stderr = p.stderr.read() - p.stderr.close() - else: - p.stderr = None - try: - rc = p.wait() + p = self.process + (self.stdout, self.stderr) = p.communicate() + rc = p.returncode finally: _remove_ssh_client(p) return rc