Browse Source

Support client restart without updating

shortcutme 5 years ago
parent
commit
5aab10fab2
3 changed files with 17 additions and 16 deletions
  1. 3 1
      src/Ui/UiWebsocket.py
  2. 2 0
      src/main.py
  3. 12 15
      zeronet.py

+ 3 - 1
src/Ui/UiWebsocket.py

@@ -960,7 +960,9 @@ class UiWebsocket(object):
         res = sys.modules["main"].file_server.openport()
         self.response(to, res)
 
-    def actionServerShutdown(self, to):
+    def actionServerShutdown(self, to, restart=False):
+        if restart:
+            sys.modules["main"].restart_after_shutdown = True
         sys.modules["main"].file_server.stop()
         sys.modules["main"].ui_server.stop()
 

+ 2 - 0
src/main.py

@@ -20,6 +20,7 @@ else:  # Old gevent
 # Not thread: pyfilesystem and systray icon, Not subprocess: Gevent 1.1+
 
 update_after_shutdown = False  # If set True then update and restart zeronet after main loop ended
+restart_after_shutdown = False  # If set True then restart zeronet after main loop ended
 
 # Load config
 from Config import config
@@ -175,6 +176,7 @@ class Actions(object):
 
         logging.info("Starting servers....")
         gevent.joinall([gevent.spawn(ui_server.start), gevent.spawn(file_server.start)])
+        logging.info("All server stopped")
 
     # Site commands
 

+ 12 - 15
zeronet.py

@@ -20,7 +20,6 @@ def main():
         if main.update_after_shutdown:  # Updater
             import gc
             import update
-            import atexit
             # Try cleanup openssl
             try:
                 if "lib.opensslVerify" in sys.modules:
@@ -42,16 +41,6 @@ def main():
             except Exception, err:
                 print "Update error: %s" % err
 
-            # Close log files
-            logger = sys.modules["main"].logging.getLogger()
-
-            for handler in logger.handlers[:]:
-                handler.flush()
-                handler.close()
-                logger.removeHandler(handler)
-
-            atexit._run_exitfuncs()
-
     except Exception, err:  # Prevent closing
         import traceback
         try:
@@ -60,13 +49,21 @@ def main():
         except Exception, log_err:
             print "Failed to log error:", log_err
             traceback.print_exc()
-        from src.Config import config
+        from Config import config
         traceback.print_exc(file=open(config.log_dir + "/error.log", "a"))
 
-    if main and main.update_after_shutdown:  # Updater
-        # Restart
-        gc.collect()  # Garbage collect
+    if main and (main.update_after_shutdown or main.restart_after_shutdown):  # Updater
+        import atexit
         print "Restarting..."
+        # Close log files
+        logger = sys.modules["main"].logging.getLogger()
+
+        for handler in logger.handlers[:]:
+            handler.flush()
+            handler.close()
+            logger.removeHandler(handler)
+
+        atexit._run_exitfuncs()
         import time
         time.sleep(1)  # Wait files to close
         args = sys.argv[:]