From: Markus Triska Date: Tue, 9 Jun 2020 21:01:28 +0000 (+0200) Subject: ENHANCED: throw Prolog exception on expired certificates X-Git-Tag: v0.8.127~50^2 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=184ef94e7e45ff757dbf2d6a5fc269edce5dcc41;p=scryer-prolog.git ENHANCED: throw Prolog exception on expired certificates Example: ?- socket_client_open('expired.badssl.com':443, S, [tls(true)]). caught: error(permission_error(open,source_sink,'expired.badssl.com'),socket_client_open/3) --- diff --git a/src/prolog/machine/system_calls.rs b/src/prolog/machine/system_calls.rs index 7d0592bb..887163a0 100644 --- a/src/prolog/machine/system_calls.rs +++ b/src/prolog/machine/system_calls.rs @@ -4536,7 +4536,10 @@ impl MachineState { match tls { "false" => { Stream::from_tcp_stream(socket_addr, tcp_stream) } "true" => { let connector = TlsConnector::new().unwrap(); - let stream = connector.connect(socket_atom.as_str(), tcp_stream).unwrap(); + let stream = match connector.connect(socket_atom.as_str(), tcp_stream) { + Ok(tls_stream) => { tls_stream } + Err(_) => { return Err(self.open_permission_error(addr, "socket_client_open", 3)); } + }; Stream::from_tls_stream(socket_addr, stream) }