Merge pull request #5 from vicariousdrama/relay-manager

Remove relay fixes
This commit is contained in:
Vic
2023-11-04 22:23:45 -04:00
committed by GitHub
2 changed files with 14 additions and 7 deletions

View File

@@ -68,8 +68,10 @@ class Relay:
)
def close(self):
self.ws.close()
self.shutdown = True
self.ws.close()
with self.lock:
self.subscriptions = {}
def check_reconnect(self):
try:

View File

@@ -27,10 +27,15 @@ class RelayManager:
self.relays[url] = relay
def remove_relay(self, url: str):
self.relays[url].close()
self.relays.pop(url)
self.threads[url].join(timeout=1)
self.threads.pop(url)
if url in self.relays:
self.relays[url].close()
self.relays.pop(url, None)
if url in self.threads:
self.threads[url].join(timeout=1)
self.threads.pop(url, None)
if url in self.queue_threads:
self.queue_threads[url].join(timeout=1)
self.queue_threads.pop(url, None)
def add_subscription(self, id: str, filters: Filters):
for relay in self.relays.values():
@@ -51,7 +56,7 @@ class RelayManager:
self.threads[relay.url].start()
self.queue_threads[relay.url] = threading.Thread(
target=relay.queue_worker,
target=relay.queue_worker,
args=(lambda: relay.shutdown,),
name=f"{relay.url}-queue",
daemon=True,
@@ -88,4 +93,4 @@ class RelayManager:
raise RelayException(
f"Could not publish {auth.id}: failed to verify signature {auth.signature}"
)
self.publish_message(auth.to_message(), auth.relay_url)
self.publish_message(auth.to_message(), auth.relay_url)