Philipp Hörist pushed to branch master at gajim / python-nbxmpp


Commits:
c2e09adc by lovetox at 2020-10-26T22:50:56+01:00
Ping: Handle ping requests

- - - - -
6e0399b5 by lovetox at 2020-10-26T23:03:36+01:00
Task: Display timeout error

- - - - -


3 changed files:

- nbxmpp/errors.py
- nbxmpp/modules/ping.py
- nbxmpp/task.py


Changes:

=====================================
nbxmpp/errors.py
=====================================
@@ -27,6 +27,10 @@ def is_error(error):
 class BaseError(Exception):
     def __init__(self, is_fatal=False):
         self.is_fatal = is_fatal
+        self.text = ''
+
+    def __str__(self):
+        return self.text
 
 
 class StanzaError(BaseError):
@@ -141,9 +145,9 @@ class TimeoutStanzaError(BaseError):
 
     log_level = logging.INFO
 
-    def __init__(self, id_):
-        BaseError.__init__(self, is_fatal=True)
-        self.text = 'IQ with id %s reached timeout' % id_
+    def __init__(self):
+        BaseError.__init__(self)
+        self.text = 'Timeout reached'
 
 
 class RegisterStanzaError(StanzaError):


=====================================
nbxmpp/modules/ping.py
=====================================
@@ -16,7 +16,9 @@
 # along with this program; If not, see <http://www.gnu.org/licenses/>.
 
 from nbxmpp.protocol import Iq
+from nbxmpp.protocol import NodeProcessed
 from nbxmpp.namespaces import Namespace
+from nbxmpp.structs import StanzaHandler
 from nbxmpp.task import iq_request_task
 from nbxmpp.modules.base import BaseModule
 from nbxmpp.modules.util import process_response
@@ -27,7 +29,19 @@ class Ping(BaseModule):
         BaseModule.__init__(self, client)
 
         self._client = client
-        self.handlers = []
+        self.handlers = [
+            StanzaHandler(name='iq',
+                          callback=self._process_ping,
+                          typ='get',
+                          ns=Namespace.PING,
+                          priority=15),
+        ]
+
+    def _process_ping(self, _client, stanza, properties):
+        self._log.info('Send pong to %s', stanza.getFrom())
+        iq = stanza.buildSimpleReply('result')
+        self._client.send_stanza(iq)
+        raise NodeProcessed
 
     @iq_request_task
     def ping(self, jid):


=====================================
nbxmpp/task.py
=====================================
@@ -309,7 +309,7 @@ class IqRequestTask(Task):
             return
 
         if result is None:
-            self._error = TimeoutStanzaError(self._iq_id)
+            self._error = TimeoutStanzaError()
             self._set_finished()
             return
 



View it on GitLab: 
https://dev.gajim.org/gajim/python-nbxmpp/-/compare/355e3076fdcf231b467a01f1fbc4a29e9331d2f5...6e0399b509293412b59ce00cb03c12cbc837bfbe

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/python-nbxmpp/-/compare/355e3076fdcf231b467a01f1fbc4a29e9331d2f5...6e0399b509293412b59ce00cb03c12cbc837bfbe
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to