diff libervia/backend/plugins/plugin_xep_0376.py @ 4320:9658c534287e

plugin XEP-0215, XEP-0376: fix bad calls to `hasFeature`: `hasFeature` was called like blocking code, missing the `await`. This has been fixed, and is now using the `memory.disco.has_feature` version.
author Goffi <goffi@goffi.org>
date Mon, 30 Sep 2024 14:14:38 +0200
parents 0d7bb4df2343
children
line wrap: on
line diff
--- a/libervia/backend/plugins/plugin_xep_0376.py	Sat Sep 28 16:00:16 2024 +0200
+++ b/libervia/backend/plugins/plugin_xep_0376.py	Mon Sep 30 14:14:38 2024 +0200
@@ -59,7 +59,7 @@
         return XEP_0376_Handler()
 
     async def profile_connected(self, client):
-        if not self.host.hasFeature(client, NS_PAM):
+        if not await self.host.memory.disco.has_feature(client, NS_PAM):
             log.warning(
                 "Your server doesn't support Pubsub Account Management, this is used to "
                 "track all your subscriptions. You may ask your server administrator to "
@@ -105,7 +105,7 @@
         sub_jid: Optional[jid.JID] = None,
         options: Optional[dict] = None,
     ) -> Tuple[bool, Optional[pubsub.Subscription]]:
-        if not self.host.hasFeature(client, NS_PAM) or client.is_component:
+        if not await self.host.memory.disco.has_feature(client, NS_PAM) or client.is_component:
             return True, None
 
         await self._sub_request(client, service, nodeIdentifier, sub_jid, options, True)
@@ -127,7 +127,7 @@
         subscriptionIdentifier: Optional[str],
         sender: Optional[jid.JID] = None,
     ) -> bool:
-        if not self.host.hasFeature(client, NS_PAM) or client.is_component:
+        if not await self.host.memory.disco.has_feature(client, NS_PAM) or client.is_component:
             return True
         await self._sub_request(client, service, nodeIdentifier, sub_jid, None, False)
         return False
@@ -138,7 +138,7 @@
         service: Optional[jid.JID],
         node: str,
     ) -> Tuple[bool, Optional[List[Dict[str, Any]]]]:
-        if not self.host.hasFeature(client, NS_PAM):
+        if not await self.host.has_feature(client, NS_PAM):
             return True, None
         if service is not None or node is not None:
             # if we have service and/or node subscriptions, it's a regular XEP-0060