From 49cefe2767439de29174d5e968cd73bb5a69f4f4 Mon Sep 17 00:00:00 2001 From: Adrian Schmutzler Date: Fri, 30 Nov 2018 18:25:56 +0100 Subject: [PATCH] api/alfred: Keep old hood if empty field is sent This suppresses hood change events if hood is lost due to disconnection. Normally, disconnects should be indicated by other events like online/offline. Signed-off-by: Adrian Schmutzler --- ffmap/routertools.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ffmap/routertools.py b/ffmap/routertools.py index dcb8f80..d3ee10a 100644 --- a/ffmap/routertools.py +++ b/ffmap/routertools.py @@ -87,17 +87,21 @@ def import_nodewatcher_xml(mysql, mac, xml, banned, hoodsv2, netifdict, hoodsdic """,(router_id,)) if olddata: uptime = olddata["sys_uptime"] - + # Filter old data (Alfred keeps data for 10 min.; old and new can mix if gateways do not sync) # We only use data where system time is bigger than before (last entry) or more than 1 hour smaller (to catch cases without timeserver) newtime = router_update["sys_time"].timestamp() oldtime = olddata["sys_time"].timestamp() if not (newtime > oldtime or newtime < (oldtime - 3600)): return + + # Keep hood if not set (V2 only, "" != None) + if router_update["hood"] == "": + router_update["hood"] = olddata["hood"] else: delete_router(mysql,router_id) - # keep hood up to date + # keep hood up to date (extremely rare case where no olddata but no hood) if router_update["hood"] == "": router_update["hood"] = "NoHood" if not router_update["hood"]: