From fb99090a32e08e85915f729c61c91bdac3c7338b Mon Sep 17 00:00:00 2001 From: Matthias Wirth Date: Sun, 11 Oct 2020 19:59:34 +0200 Subject: [PATCH] try 2ndary port when connecting to feed.adsbexchange.com --- mlat-client | 2 +- mlat/client/jsonclient.py | 2 +- mlat/client/net.py | 17 +++++++++++++++-- mlat/client/version.py | 2 +- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/mlat-client b/mlat-client index c7f557c..600b833 100755 --- a/mlat-client +++ b/mlat-client @@ -64,7 +64,7 @@ location pin from the coverage maps.""", server.add_argument('--server', help="host:port of the multilateration server to connect to", type=options.hostport, - default=('mlat.mutability.co.uk', 40147)) + default=('feed.adsbexchange.com', 31090)) server.add_argument('--no-udp', dest='udp', help="Don't offer to use UDP transport for sync/mlat messages", diff --git a/mlat/client/jsonclient.py b/mlat/client/jsonclient.py index ba0b035..2d82a8b 100644 --- a/mlat/client/jsonclient.py +++ b/mlat/client/jsonclient.py @@ -175,7 +175,7 @@ def __str__(self): class JsonServerConnection(mlat.client.net.ReconnectingConnection): - reconnect_interval = 30.0 + reconnect_interval = 15.0 heartbeat_interval = 120.0 inactivity_timeout = 60.0 diff --git a/mlat/client/net.py b/mlat/client/net.py index 32188e7..e41071c 100644 --- a/mlat/client/net.py +++ b/mlat/client/net.py @@ -46,12 +46,14 @@ class ReconnectingConnection(LoggingMixin, asyncore.dispatcher): host/port, reconnecting on connection loss. """ - reconnect_interval = 30.0 - def __init__(self, host, port): asyncore.dispatcher.__init__(self) self.host = host + self.basePort = port self.port = port + self.adsbexchangePorts = [ 31090, 64590 ] + if self.host == 'feed.adsbexchange.com' and self.basePort == 31090: + self.port = 64590 self.addrlist = [] self.state = 'disconnected' self.reconnect_at = None @@ -119,6 +121,17 @@ def reconnect(self): if len(self.addrlist) == 0: # ran out of addresses to try, resolve it again + if self.host == 'feed.adsbexchange.com' and self.basePort == 31090: + for index, port in enumerate(self.adsbexchangePorts): + if self.port == port: + self.port = self.adsbexchangePorts[(index + 1) % len(self.adsbexchangePorts)] + break + + if self.host == 'feed.adsbexchange.com' and self.basePort != self.port: + log('Connecting to {host}:{port} (trying hard-coded alternate port for adsbexchange)', host=self.host, port=self.port) + else: + log('Connecting to {host}:{port}', host=self.host, port=self.port) + self.addrlist = socket.getaddrinfo(host=self.host, port=self.port, family=socket.AF_UNSPEC, diff --git a/mlat/client/version.py b/mlat/client/version.py index 9d03dae..40e7073 100644 --- a/mlat/client/version.py +++ b/mlat/client/version.py @@ -18,4 +18,4 @@ """Just a version constant!""" -CLIENT_VERSION = "0.3.0" +CLIENT_VERSION = "0.3.1"