From 07917f1d841f449157aa3aaa2507b0547dd274e7 Mon Sep 17 00:00:00 2001 From: fiaxh Date: Mon, 16 Nov 2020 15:55:33 +0100 Subject: Refactor XmppStream, TLS and connection method logic fixes #534 --- xmpp-vala/src/core/direct_tls_xmpp_stream.vala | 31 ++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 xmpp-vala/src/core/direct_tls_xmpp_stream.vala (limited to 'xmpp-vala/src/core/direct_tls_xmpp_stream.vala') diff --git a/xmpp-vala/src/core/direct_tls_xmpp_stream.vala b/xmpp-vala/src/core/direct_tls_xmpp_stream.vala new file mode 100644 index 00000000..1d2f7339 --- /dev/null +++ b/xmpp-vala/src/core/direct_tls_xmpp_stream.vala @@ -0,0 +1,31 @@ +public class Xmpp.DirectTlsXmppStream : TlsXmppStream { + + string host; + uint16 port; + + public DirectTlsXmppStream(Jid remote, string host, uint16 port) { + this.remote_name = remote; + this.host = host; + this.port = port; + } + + public override async void connect() throws IOStreamError { + SocketClient client = new SocketClient(); + try { + debug("Connecting to %s %i (tls)", host, port); + IOStream? io_stream = yield client.connect_to_host_async(host, port); + TlsConnection tls_connection = TlsClientConnection.new(io_stream, new NetworkAddress(remote_name.to_string(), port)); + #if ALPN_SUPPORT + tls_connection.set_advertised_protocols(new string[]{"xmpp-client"}); + #endif + tls_connection.accept_certificate.connect(on_invalid_certificate); + reset_stream(tls_connection); + + yield setup(); + + attach_negotation_modules(); + } catch (Error e) { + throw new IOStreamError.CONNECT("Failed connecting to %s:%i (tls): %s", host, port, e.message); + } + } +} \ No newline at end of file -- cgit v1.2.3-54-g00ecf