diff options
author | Philipp Hörist <philipp@hoerist.com> | 2022-12-28 00:47:16 +0300 |
---|---|---|
committer | Philipp Hörist <philipp@hoerist.com> | 2022-12-28 12:15:01 +0300 |
commit | 0da8888db96f23a7329802af544b807310792166 (patch) | |
tree | c8585d82b42cf74d2cc24b77b18b39d50f63c883 /nbxmpp/websocket.py | |
parent | 6eb48cbfbe8eb66311e00b77c738b6b7f773583a (diff) |
change: Port to libsoup3
- Port code to libsoup3
- Wrap Soup.Session and Soup.Message for easier usage
Diffstat (limited to 'nbxmpp/websocket.py')
-rw-r--r-- | nbxmpp/websocket.py | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/nbxmpp/websocket.py b/nbxmpp/websocket.py index b0cf92e..5db52d7 100644 --- a/nbxmpp/websocket.py +++ b/nbxmpp/websocket.py @@ -22,7 +22,6 @@ from gi.repository import GLib from gi.repository import Gio from nbxmpp.const import TCPState -from nbxmpp.const import ConnectionType from nbxmpp.util import get_websocket_close_string from nbxmpp.util import convert_tls_error_flags from nbxmpp.connection import Connection @@ -35,11 +34,10 @@ class WebsocketConnection(Connection): Connection.__init__(self, *args, **kwargs) self._session = Soup.Session() - self._session.props.ssl_strict = False if self._log.getEffectiveLevel() == logging.INFO: self._session.add_feature( - Soup.Logger.new(Soup.LoggerLogLevel.BODY, -1)) + Soup.Logger.new(Soup.LoggerLogLevel.BODY)) self._websocket = None self._cancellable = Gio.Cancellable() @@ -53,11 +51,12 @@ class WebsocketConnection(Connection): self.state = TCPState.CONNECTING message = Soup.Message.new('GET', self._address.uri) - message.connect('starting', self._check_certificate) + message.connect('accept-certificate', self._check_certificate) message.set_flags(Soup.MessageFlags.NO_REDIRECT) self._session.websocket_connect_async(message, None, ['xmpp'], + GLib.PRIORITY_DEFAULT, self._cancellable, self._on_connect, None) @@ -91,19 +90,20 @@ class WebsocketConnection(Connection): # Soup.Session does this automatically raise NotImplementedError - def _check_certificate(self, message): - https_used, certificate, errors = message.get_https_status() - if not https_used and self._address.type == ConnectionType.PLAIN: - return + def _check_certificate(self, + _message, + certificate, + errors): self._peer_certificate = certificate self._peer_certificate_errors = convert_tls_error_flags(errors) if self._accept_certificate(): - return + return True self.notify('bad-certificate') self._cancellable.cancel() + return False def _on_websocket_message(self, _websocket, _type, message): data = message.get_data().decode() |