diff --git a/oml/nodes.py b/oml/nodes.py index 09809fc..c5cfbfe 100644 --- a/oml/nodes.py +++ b/oml/nodes.py @@ -539,9 +539,10 @@ class Nodes(Thread): def peer_queue(self, peer, action, *args): if peer not in self._nodes: self._add(peer) + elif not self._nodes[peer].is_online(): + self._nodes[peer].ping() self._nodes[peer].queue(action, *args) - def is_online(self, id): return id in self._nodes and self._nodes[id].is_online() @@ -557,7 +558,12 @@ class Nodes(Thread): if target == 'all': nodes = list(self._nodes.values()) elif target == 'peered': - nodes = [n for n in list(self._nodes.values()) if n.user.peered] + ids = [] + with db.session(): + from user.models import User + for u in User.query.filter(User.id != settings.USER_ID).filter_by(peered=True).all(): + ids.append(u.id) + nodes = [n for n in list(self._nodes.values()) if n.user_id in ids] elif target == 'online': nodes = [n for n in list(self._nodes.values()) if n.online] else: