diff --git a/src/Config.py b/src/Config.py
index 8ce384cd..62db5fca 100644
--- a/src/Config.py
+++ b/src/Config.py
@@ -8,7 +8,7 @@ class Config(object):
 
     def __init__(self, argv):
         self.version = "0.3.4"
-        self.rev = 656
+        self.rev = 664
         self.argv = argv
         self.action = None
         self.createParser()
diff --git a/src/File/FileRequest.py b/src/File/FileRequest.py
index 41626ef5..bfe39a66 100644
--- a/src/File/FileRequest.py
+++ b/src/File/FileRequest.py
@@ -74,6 +74,8 @@ class FileRequest(object):
             self.actionSetHashfield(params)
         elif cmd == "siteReload":
             self.actionSiteReload(params)
+        elif cmd == "sitePublish":
+            self.actionSitePublish(params)
         elif cmd == "ping":
             self.actionPing()
         else:
@@ -331,6 +333,15 @@ class FileRequest(object):
 
         self.response({"ok": "Reloaded"})
 
+    def actionSitePublish(self, params):
+        if self.connection.ip != "127.0.0.1" and self.connection.ip != config.ip_external:
+            self.response({"error": "Only local host allowed"})
+
+        site = self.sites.get(params["site"])
+        num = site.publish(inner_path=params.get("inner_path", "content.json"))
+
+        self.response({"ok": "Successfuly published to %s peers" % num})
+
     # Send a simple Pong! answer
     def actionPing(self):
         self.response("Pong!")
diff --git a/src/lib/opensslVerify/opensslVerify.py b/src/lib/opensslVerify/opensslVerify.py
index 5fd9a76d..8ba2e46c 100644
--- a/src/lib/opensslVerify/opensslVerify.py
+++ b/src/lib/opensslVerify/opensslVerify.py
@@ -396,10 +396,15 @@ def ECDSA_SIG_recover_key_GFp(eckey, r, s, msg, msglen, recid, check):
 
 
 def closeLibrary():
+    handle = ssl._lib._handle
     if "FreeLibrary" in dir(_ctypes):
-        _ctypes.FreeLibrary(ssl._lib._handle)
+        _ctypes.FreeLibrary(handle)
+        _ctypes.FreeLibrary(handle)
+        print "OpenSSL closed, handle:", handle
     else:
-        _ctypes.dlclose(ssl._lib._handle)
+        _ctypes.dlclose(handle)
+        _ctypes.dlclose(handle)
+        print "OpenSSL dlclosed, handle:", handle
 
 
 def getMessagePubkey(message, sig):
diff --git a/src/lib/pyelliptic/openssl.py b/src/lib/pyelliptic/openssl.py
index eda17668..8dd726e4 100644
--- a/src/lib/pyelliptic/openssl.py
+++ b/src/lib/pyelliptic/openssl.py
@@ -440,6 +440,7 @@ def openLibrary():
 
 
 def closeLibrary():
+    import _ctypes
     if "FreeLibrary" in dir(_ctypes):
         _ctypes.FreeLibrary(OpenSSL._lib._handle)
     else:
diff --git a/src/main.py b/src/main.py
index 11847799..98cde932 100644
--- a/src/main.py
+++ b/src/main.py
@@ -231,34 +231,40 @@ class Actions(object):
         from File import FileServer  # We need fileserver to handle incoming file requests
         from Peer import Peer
 
-        logging.info("Creating FileServer....")
-        file_server = FileServer()
-        file_server_thread = gevent.spawn(file_server.start, check_sites=False)  # Dont check every site integrity
-        file_server.openport()
-
+        logging.info("Loading site...")
         site = SiteManager.site_manager.list()[address]
         site.settings["serving"] = True  # Serving the site even if its disabled
 
-        # Notify local client on new content
-        if config.ip_external:
-            logging.info("Sending siteReload")
-            my_peer = Peer(config.ip_external, config.fileserver_port)
-            logging.info(my_peer.request("siteReload", {"site": site.address, "inner_path": inner_path}))
+        logging.info("Creating FileServer....")
+        file_server = FileServer()
+        file_server_thread = gevent.spawn(file_server.start, check_sites=False)  # Dont check every site integrity
+        time.sleep(0)
 
-        if peer_ip:  # Announce ip specificed
-            site.addPeer(peer_ip, peer_port)
-        else:  # Just ask the tracker
-            logging.info("Gathering peers from tracker")
-            site.announce()  # Gather peers
-
-        published = site.publish(20, inner_path)  # Push to 20 peers
-        if published > 0:
-            time.sleep(3)
-            logging.info("Serving files (max 60s)...")
-            gevent.joinall([file_server_thread], timeout=60)
-            logging.info("Done.")
+        if not file_server_thread.ready():
+            # Started fileserver
+            file_server.openport()
+            if peer_ip:  # Announce ip specificed
+                site.addPeer(peer_ip, peer_port)
+            else:  # Just ask the tracker
+                logging.info("Gathering peers from tracker")
+                site.announce()  # Gather peers
+            published = site.publish(20, inner_path)  # Push to 20 peers
+            if published > 0:
+                time.sleep(3)
+                logging.info("Serving files (max 60s)...")
+                gevent.joinall([file_server_thread], timeout=60)
+                logging.info("Done.")
+            else:
+                logging.info("No peers found, sitePublish command only works if you already have visitors serving your site")
         else:
-            logging.info("No peers found, sitePublish command only works if you already have visitors serving your site")
+            # Notify local client on new content
+            logging.info("Sending siteReload")
+            my_peer = Peer("127.0.0.1", config.fileserver_port)
+            logging.info(my_peer.request("siteReload", {"site": site.address, "inner_path": inner_path}))
+            logging.info("Sending sitePublish")
+            logging.info(my_peer.request("sitePublish", {"site": site.address, "inner_path": inner_path}))
+            logging.info("Done.")
+
 
     # Crypto commands
     def cryptPrivatekeyToAddress(self, privatekey=None):
diff --git a/zeronet.py b/zeronet.py
index a287d1f1..959699c8 100644
--- a/zeronet.py
+++ b/zeronet.py
@@ -21,7 +21,12 @@ def main():
                 if "lib.opensslVerify" in sys.modules:
                     sys.modules["lib.opensslVerify"].opensslVerify.closeLibrary()
             except Exception, err:
-                print "Error closing openssl", err
+                print "Error closing opensslVerify lib", err
+            try:
+                if "lib.pyelliptic" in sys.modules:
+                    sys.modules["lib.pyelliptic"].openssl.closeLibrary()
+            except Exception, err:
+                print "Error closing pyelliptic lib", err
 
             # Update
             update.update()