From 74c757244ada25ea4d3131faf6ac4bb56ae3313c Mon Sep 17 00:00:00 2001 From: Sniffleupagus Date: Tue, 20 Jun 2023 12:45:13 -0700 Subject: [PATCH] added "try..except" wrappers around calls in fetcher to keep the thread alive, even when fetches fail temporarily --- pwnagotchi/agent.py | 42 +++++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/pwnagotchi/agent.py b/pwnagotchi/agent.py index 429b0ab1..1f882218 100644 --- a/pwnagotchi/agent.py +++ b/pwnagotchi/agent.py @@ -312,13 +312,36 @@ class Agent(Client, Automata, AsyncAdvertiser, AsyncTrainer): def _fetch_stats(self): while True: - s = self.session() - self._update_uptime(s) - self._update_advertisement(s) - self._update_peers() - self._update_counters() - self._update_handshakes(0) - time.sleep(1) + try: + s = self.session() + except Exception as err: + logging.error("[agent:_fetch_stats] self.session: %s" % repr(err)) + + try: + self._update_uptime(s) + except Exception as err: + logging.error("[agent:_fetch_stats] self.update_uptimes: %s" % repr(err)) + + try: + self._update_advertisement(s) + except Exception as err: + logging.error("[agent:_fetch_stats] self.update_advertisements: %s" % repr(err)) + + try: + self._update_peers() + except Exception as err: + logging.error("[agent:_fetch_stats] self.update_peers: %s" % repr(err)) + try: + self._update_counters() + except Exception as err: + logging.error("[agent:_fetch_stats] self.update_counters: %s" % repr(err)) + try: + self._update_handshakes(0) + except Exception as err: + logging.error("[agent:_fetch_stats] self.update_handshakes: %s" % repr(err)) + + time.sleep(5) + async def _on_event(self, msg): found_handshake = False @@ -362,12 +385,13 @@ class Agent(Client, Automata, AsyncAdvertiser, AsyncTrainer): self.run('events.clear') while True: - logging.debug("polling events ...") + logging.debug("[agent:_event_poller] polling events ...") try: loop.create_task(self.start_websocket(self._on_event)) loop.run_forever() + logging.debug("[agent:_event_poller] loop loop loop") except Exception as ex: - logging.debug("Error while polling via websocket (%s)", ex) + logging.debug("[agent:_event_poller] Error while polling via websocket (%s)", ex) def start_event_polling(self): # start a thread and pass in the mainloop