From b3d920b2952ca27302005352d87cc9e451f798ef Mon Sep 17 00:00:00 2001 From: khr Date: Sun, 29 Mar 2020 03:25:59 +0200 Subject: [PATCH] try binding again, backoff if failed --- ServerWrapper_v0.1.0.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/ServerWrapper_v0.1.0.py b/ServerWrapper_v0.1.0.py index ebe014b..15d34e6 100644 --- a/ServerWrapper_v0.1.0.py +++ b/ServerWrapper_v0.1.0.py @@ -212,7 +212,22 @@ class MinecraftServerBridge(socket_util): def socket_reset(self): super().socket_reset() LOG.info("Server Binding to " + self.host + " " + str(self.port)) - self.soc.bind((self.host, self.port)) + while True: + backoff = 1 + try: + self.soc.bind((self.host, self.port)) + break + except OSError as e: + if e.errno == 98: + LOG.warning( + "Unable to bind to port {}, trying again in {} seconds".format( + self.port, backoff + ) + ) + time.sleep(backoff) + backoff *= 2 + else: + raise e LOG.info("Server Bound") self.soc.listen(1) LOG.info("Server listen to host") @@ -355,7 +370,7 @@ def make_config(configfile, server=True): def main(): - logging.basicConfig() + logging.basicConfig(level=logging.DEBUG) parser = argparse.ArgumentParser() mode_group = parser.add_mutually_exclusive_group(required=True)