Browse Source

api: cleanup already started servers when some later failed

Marek Marczykowski-Górecki 6 years ago
parent
commit
e6d5337fa7
1 changed files with 12 additions and 1 deletions
  1. 12 1
      qubes/api/__init__.py

+ 12 - 1
qubes/api/__init__.py

@@ -398,7 +398,18 @@ def create_servers(*args, force=False, loop=None, **kwargs):
                 shutil.chown(sock.getsockname(), group='qubes')
 
             servers.append(server)
-
+    except:
+        for server in servers:
+            for sock in server.sockets:
+                try:
+                    os.unlink(sock.getsockname())
+                except FileNotFoundError:
+                    pass
+            server.close()
+        if servers:
+            yield from asyncio.wait([
+                server.wait_closed() for server in servers])
+        raise
     finally:
         os.umask(old_umask)