Make ebuild-ipc.py close the output_file before trying to re-open it
after it has timed out.
diff --git a/bin/ebuild-ipc.py b/bin/ebuild-ipc.py
index 20410eb..2d524a7 100755
--- a/bin/ebuild-ipc.py
+++ b/bin/ebuild-ipc.py
@@ -94,6 +94,7 @@
 		input_fd = os.open(self.ipc_out_fifo,
 			os.O_RDONLY|os.O_NONBLOCK)
 		input_file = os.fdopen(input_fd, 'rb', 0)
+		output_file = None
 
 		while True:
 			try:
@@ -101,13 +102,17 @@
 					portage.exception.AlarmSignal.register(
 						self._COMMUNICATE_RETRY_TIMEOUT_SECONDS)
 
+					if output_file is not None:
+						output_file.close()
+						output_file = None
+
 					output_file = open(self.ipc_in_fifo, 'wb', 0)
 
 					# Write the whole pickle in a single atomic write() call,
 					# since the reader is in non-blocking mode and we want
 					# it to get the whole pickle at once.
 					output_file.write(pickle.dumps(args))
-					output_file.flush()
+					output_file.close()
 					break
 				finally:
 					portage.exception.AlarmSignal.unregister()
@@ -172,7 +177,6 @@
 					level=logging.ERROR, noiselevel=-1)
 
 			else:
-				output_file.close()
 				input_file.close()
 
 				(out, err, rval) = reply