diff --git a/lib/utils.py b/lib/utils.py
index 2909f866418db6b21b17d0e80b09d4ba80a17b30..1a8b185dfcb460e66ca462532b3634e558eba48f 100644
--- a/lib/utils.py
+++ b/lib/utils.py
@@ -2519,12 +2519,16 @@ def IgnoreSignals(fn, *args, **kwargs):
   try:
     return fn(*args, **kwargs)
   except EnvironmentError, err:
-    if err.errno != errno.EINTR:
+    if err.errno == errno.EINTR:
+      return None
+    else:
       raise
   except (select.error, socket.error), err:
     # In python 2.6 and above select.error is an IOError, so it's handled
     # above, in 2.5 and below it's not, and it's handled here.
-    if not (err.args and err.args[0] == errno.EINTR):
+    if err.args and err.args[0] == errno.EINTR:
+      return None
+    else:
       raise