From 79a2dd109927dff994c8403f0ae99a0c07b6859d Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 6 Jan 2021 01:38:09 +0000 Subject: [PATCH] Fix missing master maintainance loop bug (peers not timing out) --- bridge_master.py | 36 +++++++++++++++++------------------- hblink.py | 4 ++-- hotspot_proxy_v2.py | 8 ++++---- 3 files changed, 23 insertions(+), 25 deletions(-) diff --git a/bridge_master.py b/bridge_master.py index 09bf9b2..6012ccd 100755 --- a/bridge_master.py +++ b/bridge_master.py @@ -624,17 +624,13 @@ def options_config(): tg = int(tg) make_static_tg(tg,2,_tmout,_system) - systems[_system]._peer_sema.acquire(blocking=True) - _peerstmp = CONFIG['SYSTEMS'][_system]['PEERS'] - CONFIG['SYSTEMS'][_system].update({ - 'TS1_STATIC' : _options['TS1_STATIC'], - 'TS2_STATIC' : _options['TS2_STATIC'], - 'DEFAULT_REFLECTOR' : int(_options['DEFAULT_REFLECTOR']), - 'DEFAULT_UA_TIMER' : int(_options['DEFAULT_UA_TIMER']), - 'PEERS' : _peerstmp - }) - systems[_system]._peer_sema.release() - + # systems[_system]._peer_sema.acquire(blocking=True) + # _peerstmp = CONFIG['SYSTEMS'][_system]['PEERS'] + CONFIG['SYSTEMS'][_system]['TS1_STATIC'] = _options['TS1_STATIC'] + CONFIG['SYSTEMS'][_system]['TS2_STATIC'] = _options['TS2_STATIC'] + CONFIG['SYSTEMS'][_system]['DEFAULT_REFLECTOR'] = int(_options['DEFAULT_REFLECTOR']) + CONFIG['SYSTEMS'][_system]['DEFAULT_UA_TIMER'] = int(_options['DEFAULT_UA_TIMER']) + def mysql_config_check(): logger.debug('(MYSQL) Periodic config check') @@ -720,12 +716,11 @@ def mysql_config_check(): #Preserve options line if 'OPTIONS' in CONFIG['SYSTEMS'][system]: SQLCONFIG[system]['OPTIONS'] = CONFIG['SYSTEMS'][system]['OPTIONS'] - SQLCONFIG[system].update({ - 'TS1_STATIC' : CONFIG['SYSTEMS'][system]['TS1_STATIC'], - 'TS2_STATIC' : CONFIG['SYSTEMS'][system]['TS2_STATIC'], - 'DEFAULT_UA_TIMER' : CONFIG['SYSTEMS'][system]['DEFAULT_UA_TIMER'], - 'DEFAULT_REFLECTOR' : CONFIG['SYSTEMS'][system]['DEFAULT_REFLECTOR'] - }) + SQLCONFIG[system]['TS1_STATIC'] = CONFIG['SYSTEMS'][system]['TS1_STATIC'] + SQLCONFIG[system]['TS2_STATIC'] = CONFIG['SYSTEMS'][system]['TS2_STATIC'] + SQLCONFIG[system]['DEFAULT_UA_TIMER'] = CONFIG['SYSTEMS'][system]['DEFAULT_UA_TIMER'] + SQLCONFIG[system]['DEFAULT_REFLECTOR'] = CONFIG['SYSTEMS'][system]['DEFAULT_REFLECTOR'] + #logger.debug('(MYSQL) %s has HBP Options line - skipping',system) #continue @@ -900,11 +895,14 @@ def mysql_config_check(): logger.debug('(MYSQL) TG2 ACL changed') #Preserve peers list - if system in CONFIG['SYSTEMS'] and CONFIG['SYSTEMS'][system]['ENABLED']: + if system in CONFIG['SYSTEMS'] and CONFIG['SYSTEMS'][system]['ENABLED'] and 'PEERS' in CONFIG['SYSTEMS'][system] : systems[system]._peer_sema.acquire(blocking=True) SQLCONFIG[system]['PEERS'] = CONFIG['SYSTEMS'][system]['PEERS'] + CONFIG['SYSTEMS'][system].update(SQLCONFIG[system]) systems[system]._peer_sema.release() - CONFIG['SYSTEMS'][system].update(SQLCONFIG[system]) + else: + CONFIG['SYSTEMS'][system].update(SQLCONFIG[system]) + #Add MySQL config data to config dict #CONFIG['SYSTEMS'].update(SQLCONFIG) diff --git a/hblink.py b/hblink.py index 6c2ff20..30d200d 100755 --- a/hblink.py +++ b/hblink.py @@ -253,9 +253,9 @@ class HBSYSTEM(DatagramProtocol): # Remove any timed out peers from the configuration del self._CONFIG['SYSTEMS'][self._system]['PEERS'][peer] self._peer_sema.release() - if not self._peers and self._CONFIG['OPTIONS']: + if 'PEERS' not in self._CONFIG['SYSTEMS'][self._system] and 'OPTIONS' in self._CONFIG['SYSTEMS'][self._system]: logger.info('(%s) Deleting HBP Options',self._system) - del self._CONFIG['OPTIONS'] + del self._CONFIG['SYSTEMS'][self._system]['OPTIONS'] # Aliased in __init__ to maintenance_loop if system is a peer def peer_maintenance_loop(self): diff --git a/hotspot_proxy_v2.py b/hotspot_proxy_v2.py index f29d355..03aa2a9 100644 --- a/hotspot_proxy_v2.py +++ b/hotspot_proxy_v2.py @@ -67,9 +67,9 @@ class Proxy(DatagramProtocol): _peer_id = self.connTrack[port] elif _command == MSTN: _peer_id = data[6:10] - #self.peerTrack[_peer_id]['timer'].cancel() - #self.reaper(_peer_id) - #return + self.peerTrack[_peer_id]['timer'].cancel() + self.reaper(_peer_id) + return elif _command == MSTP: _peer_id = data[7:11] elif _command == MSTC: @@ -147,7 +147,7 @@ if __name__ == '__main__': Master = "127.0.0.1" ListenPort = 62031 - DestportStart = 5000 + DestportStart = 50000 DestPortEnd = 50600 Timeout = 30 Stats = True