jsonrpc: Fix Python implementation of inactivity logic.
[sliver-openvswitch.git] / python / ovs / daemon.py
index 85db050..650d250 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2010, 2011 Nicira Networks
+# Copyright (c) 2010, 2011 Nicira, Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -141,7 +141,7 @@ def _make_pidfile():
         # This is global to keep Python from garbage-collecting and
         # therefore closing our file after this function exits.  That would
         # unlock the lock for us, and we don't want that.
-        global file
+        global file_handle
 
         file_handle = open(tmpfile, "w")
     except IOError, e:
@@ -245,13 +245,19 @@ def _fork_and_wait_for_startup():
                 break
         if len(s) != 1:
             retval, status = _waitpid(pid, 0)
-            if (retval == pid and
-                os.WIFEXITED(status) and os.WEXITSTATUS(status)):
-                # Child exited with an error.  Convey the same error to
-                # our parent process as a courtesy.
-                sys.exit(os.WEXITSTATUS(status))
+            if retval == pid:
+                if os.WIFEXITED(status) and os.WEXITSTATUS(status):
+                    # Child exited with an error.  Convey the same error to
+                    # our parent process as a courtesy.
+                    sys.exit(os.WEXITSTATUS(status))
+                else:
+                    sys.stderr.write("fork child failed to signal "
+                                     "startup (%s)\n"
+                                     % ovs.process.status_msg(status))
             else:
-                sys.stderr.write("fork child failed to signal startup\n")
+                assert retval < 0
+                sys.stderr.write("waitpid failed (%s)\n"
+                                 % os.strerror(-retval))
                 sys.exit(1)
 
         os.close(rfd)
@@ -503,7 +509,7 @@ def add_args(parser):
             help="Do not chdir to '/'.")
     group.add_argument("--monitor", action="store_true",
             help="Monitor %s process." % ovs.util.PROGRAM_NAME)
-    group.add_argument("--pidfile", nargs="?", default=pidfile,
+    group.add_argument("--pidfile", nargs="?", const=pidfile,
             help="Create pidfile (default %s)." % pidfile)
     group.add_argument("--overwrite-pidfile", action="store_true",
             help="With --pidfile, start even if already running.")