]> www.average.org Git - loctrkd.git/commitdiff
collector: fix problems found by fuzzer test
authorEugene Crosser <crosser@average.org>
Wed, 15 Jun 2022 21:42:23 +0000 (23:42 +0200)
committerEugene Crosser <crosser@average.org>
Wed, 15 Jun 2022 21:42:23 +0000 (23:42 +0200)
gps303/collector.py

index 28ee4a8cd92321a8007747fea3dd7226066902b7..c2efd79b82182e13319526a644abccb0e85071b9 100644 (file)
@@ -171,7 +171,7 @@ class Clients:
             log.info("Not connected (IMEI %s)", resp.imei)
 
 
-def runserver(conf: ConfigParser) -> None:
+def runserver(conf: ConfigParser, handle_hibernate: bool = True) -> None:
     # Is this https://github.com/zeromq/pyzmq/issues/1627 still not fixed?!
     zctx = zmq.Context()  # type: ignore
     zpub = zctx.socket(zmq.PUB)  # type: ignore
@@ -224,7 +224,7 @@ def runserver(conf: ConfigParser) -> None:
                                     packet=packet,
                                 ).packed
                             )
-                            if proto == HIBERNATION.PROTO:
+                            if proto == HIBERNATION.PROTO and handle_hibernate:
                                 log.debug(
                                     "HIBERNATION from fd %d (IMEI %s)",
                                     sk,
@@ -258,7 +258,10 @@ def runserver(conf: ConfigParser) -> None:
                 fd = clients.add(clntsock, clntaddr)
                 poller.register(fd, flags=zmq.POLLIN)
     except KeyboardInterrupt:
-        pass
+        zpub.close()
+        zpull.close()
+        zctx.destroy()  # type: ignore
+        tcpl.close()
 
 
 if __name__.endswith("__main__"):