Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/python-nbxmpp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Hörist <philipp@hoerist.com>2023-05-26 23:21:50 +0300
committerPhilipp Hörist <philipp@hoerist.com>2023-05-26 23:21:50 +0300
commit13e0e3b68135d7af25de12cf6e8f472db030542d (patch)
tree340c1e07e01539de69ea1aae7aaaa5401369238f
parente1e1ea019f6c398e4bd150228a5cf906391aa316 (diff)
fix: Websocket: Always set peer certificate
-rw-r--r--nbxmpp/websocket.py11
1 files changed, 11 insertions, 0 deletions
diff --git a/nbxmpp/websocket.py b/nbxmpp/websocket.py
index 5db52d7..a3f8d82 100644
--- a/nbxmpp/websocket.py
+++ b/nbxmpp/websocket.py
@@ -52,6 +52,8 @@ class WebsocketConnection(Connection):
message = Soup.Message.new('GET', self._address.uri)
message.connect('accept-certificate', self._check_certificate)
+ message.connect('notify::tls-peer-certificate',
+ self._on_certificate_set)
message.set_flags(Soup.MessageFlags.NO_REDIRECT)
self._session.websocket_connect_async(message,
None,
@@ -105,6 +107,15 @@ class WebsocketConnection(Connection):
self._cancellable.cancel()
return False
+ def _on_certificate_set(self, message, _param):
+ if self._peer_certificate is not None:
+ return
+
+ # If the cert has errors _check_certificate() will set the cert.
+ self._peer_certificate = message.props.tls_peer_certificate
+ self._peer_certificate_errors = convert_tls_error_flags(
+ message.props.tls_peer_certificate_errors)
+
def _on_websocket_message(self, _websocket, _type, message):
data = message.get_data().decode()
self._log_stanza(data)