diff --git a/relay/client_connection.py b/relay/client_connection.py index 695b369..8b5fdfd 100644 --- a/relay/client_connection.py +++ b/relay/client_connection.py @@ -77,6 +77,10 @@ class NostrClientConnection: resp = event.serialize_response(nostr_filter.subscription_id) await self._send_msg(resp) return True + else: + logger.info( + f"[NOSTRRELAY CLIENT] ❌ Filter didn't match for event {event.id}" + ) return False def _is_direct_message_for_other(self, event: NostrEvent) -> bool: @@ -98,6 +102,10 @@ class NostrClientConnection: async def _broadcast_event(self, e: NostrEvent): if self.broadcast_event: await self.broadcast_event(self, e) + else: + logger.warning( + f"[NOSTRRELAY CLIENT] ❌ No broadcast_event callback available for event {e.id}" + ) async def _handle_message(self, data: list) -> list: if len(data) < 2: @@ -113,6 +121,8 @@ class NostrClientConnection: } event = NostrEvent(**event_dict) + # Set the size field from the size_bytes property + event.size = event.size_bytes await self._handle_event(event) return [] if message_type == NostrEventType.REQ: @@ -120,6 +130,8 @@ class NostrClientConnection: return [] subscription_id = data[1] # Handle multiple filters in REQ message + # First remove existing filters for this subscription_id + self._remove_filter(subscription_id) responses = [] for filter_data in data[2:]: response = await self._handle_request( @@ -293,8 +305,7 @@ class NostrClientConnection: return [["NOTICE", f"This is a paid relay: '{self.relay_id}'"]] nostr_filter.subscription_id = subscription_id - self._remove_filter(subscription_id) - if self._can_add_filter(): + if not self._can_add_filter(): max_filters = self.config.max_client_filters return [ [ @@ -325,8 +336,8 @@ class NostrClientConnection: def _can_add_filter(self) -> bool: return ( - self.config.max_client_filters != 0 - and len(self.filters) >= self.config.max_client_filters + self.config.max_client_filters == 0 + or len(self.filters) < self.config.max_client_filters ) def _auth_challenge_expired(self): diff --git a/relay/event.py b/relay/event.py index 7154ece..8cee1b9 100644 --- a/relay/event.py +++ b/relay/event.py @@ -23,6 +23,7 @@ class NostrEvent(BaseModel): tags: list[list[str]] = Field(default=[], no_database=True) content: str = "" sig: str + size: int = 0 def nostr_dict(self) -> dict: _nostr_dict = dict(self)