diff --git a/bumper/xmppserver.py b/bumper/xmppserver.py index b13f243..c6f5a6e 100644 --- a/bumper/xmppserver.py +++ b/bumper/xmppserver.py @@ -104,6 +104,16 @@ class Client(threading.Thread): data = data.encode() client.send(data.decode('utf-8')) + + def _handle_ping(self, xml, data): + if(xml.get('to').find('@') == -1): + # Ping to server - respond + self.send(''.format(xml.get('id'), xml.get('to'))) + else: + for client in XMPPServer.clients: + if client.address != self.address and client.state == client.READY: + client.send(data.decode('utf-8')) + def _handle_result(self, data): # forward for client in XMPPServer.clients: @@ -144,8 +154,7 @@ class Client(threading.Thread): elif child == 'query': self._handle_ctl(xml, data) elif child == 'ping': - # respond to ping request - res = ''.format(last_id, xml.get('to')) + self._handle_ping(xml, data) elif xml.get('type') == 'result': self._handle_result(data) if res: