daemon: Tolerate EINTR in fork_and_wait_for_startup().
[sliver-openvswitch.git] / python / ovs / daemon.py
index 4e54e69..4df2371 100644 (file)
@@ -213,10 +213,15 @@ def _fork_and_wait_for_startup():
         # Running in parent process.
         os.close(wfd)
         ovs.fatal_signal.fork()
-        try:
-            s = os.read(rfd, 1)
-        except OSError, e:
-            s = ""
+        while True:
+            try:
+                s = os.read(rfd, 1)
+                error = 0
+            except OSError, e:
+                s = ""
+                error = e.errno
+            if error != errno.EINTR:
+                break
         if len(s) != 1:
             retval, status = _waitpid(pid, 0)
             if (retval == pid and