From 3d3ffda5d8be1bc858829da9c6ad3d82cae66322 Mon Sep 17 00:00:00 2001 From: Lars Karlitski Date: Sat, 5 Oct 2019 23:41:06 +0200 Subject: [PATCH] remoteloop: don't close a socket it didn't open Closing the socket is the responsibility of whoever opened it. Fix this in the only user (qemu assembler) by using socket() in a `with` block, which closes the socket on exit. --- assemblers/org.osbuild.qemu | 10 ++++++---- osbuild/remoteloop.py | 3 --- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/assemblers/org.osbuild.qemu b/assemblers/org.osbuild.qemu index 9c572648..52ebca17 100755 --- a/assemblers/org.osbuild.qemu +++ b/assemblers/org.osbuild.qemu @@ -111,8 +111,10 @@ def main(tree, output_dir, options, loop_client): if __name__ == '__main__': args = json.load(sys.stdin) - sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM) - sock.setsockopt(socket.SOL_SOCKET, socket.SO_PASSCRED, 1) - sock.connect("/run/osbuild/api/remoteloop") - ret = main(args["tree"], args["output_dir"], args["options"], remoteloop.LoopClient(sock)) + + with socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM) as sock: + sock.setsockopt(socket.SOL_SOCKET, socket.SO_PASSCRED, 1) + sock.connect("/run/osbuild/api/remoteloop") + ret = main(args["tree"], args["output_dir"], args["options"], remoteloop.LoopClient(sock)) + sys.exit(ret) diff --git a/osbuild/remoteloop.py b/osbuild/remoteloop.py index 4a5f160e..8ea65cb5 100644 --- a/osbuild/remoteloop.py +++ b/osbuild/remoteloop.py @@ -112,9 +112,6 @@ class LoopClient: def __init__(self, sock): self.sock = sock - def __del__(self): - self.sock.close() - def create_device(self, fd, dir_fd=None, offset=None, sizelimit=None): req = {} fds = array.array("i")