--- a/Utilities/BackgroundClient.py Mon May 21 16:53:11 2018 +0200 +++ b/Utilities/BackgroundClient.py Mon May 21 22:16:21 2018 +0200 @@ -115,7 +115,9 @@ data = self.connection.recv(length, socket.MSG_PEEK) except socket.error: pass - self.connection.setblocking(True) + finally: + self.connection.setblocking(True) + return data def __cancelled(self): @@ -127,7 +129,7 @@ msg = self.__peek(struct.calcsize(b'!II') + 6) if msg[-6:] == b"CANCEL": # get rid of the message data - self.__peek(struct.calcsize(b'!II') + 6) + self.__receive(struct.calcsize(b'!II') + 6) return True else: return False @@ -178,6 +180,8 @@ ret = 'Unknown service.' self.__send(fx, fn, ret) + except socket.error: + pass except Exception: exctype, excval, exctb = sys.exc_info() tbinfofile = io.StringIO() @@ -187,11 +191,12 @@ del exctb self.__send( 'EXCEPTION', '?', [str(exctype), str(excval), tbinfo]) - - # Give time to process latest response on server side - time.sleep(0.5) - self.connection.shutdown(socket.SHUT_RDWR) - self.connection.close() + + finally: + # Give time to process latest response on server side + time.sleep(0.5) + self.connection.shutdown(socket.SHUT_RDWR) + self.connection.close() if __name__ == '__main__': if len(sys.argv) != 4: