changeset 840:a2b1ae53565e monetdbs

Improve error messages
author Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
date Fri, 15 Dec 2023 16:36:49 +0100 (16 months ago)
parents 33fadeb034a7
children 15d606f44a26
files src/main/java/org/monetdb/mcl/net/MapiSocket.java src/main/java/org/monetdb/mcl/net/SecureSocket.java
diffstat 2 files changed, 23 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/org/monetdb/mcl/net/MapiSocket.java
+++ b/src/main/java/org/monetdb/mcl/net/MapiSocket.java
@@ -23,6 +23,8 @@ import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.*;
 
+import javax.net.ssl.SSLException;
+
 import org.monetdb.mcl.MCLException;
 import org.monetdb.mcl.io.BufferedMCLReader;
 import org.monetdb.mcl.io.BufferedMCLWriter;
@@ -356,22 +358,29 @@ public final class MapiSocket {
 			throw new MCLException("Unix domain sockets are not supported, only TCP");
 		}
 		int port = validated.connectPort();
-		Socket sock = new Socket(tcpHost, port);
-		sock.setSoTimeout(validated.getSoTimeout());
-		sock.setTcpNoDelay(true);
-		sock.setKeepAlive(true);
+		Socket sock = null;
+		try {
+			sock = new Socket(tcpHost, port);
+			sock.setSoTimeout(validated.getSoTimeout());
+			sock.setTcpNoDelay(true);
+			sock.setKeepAlive(true);
 
-		sock = wrapTLS(sock, validated);
+			sock = wrapTLS(sock, validated);
 
-		fromMonet = new BlockInputStream(sock.getInputStream());
-		toMonet = new BlockOutputStream(sock.getOutputStream());
-		reader = new BufferedMCLReader(fromMonet, StandardCharsets.UTF_8);
-		writer = new BufferedMCLWriter(toMonet, StandardCharsets.UTF_8);
-		writer.registerReader(reader);
-		reader.advance();
+			fromMonet = new BlockInputStream(sock.getInputStream());
+			toMonet = new BlockOutputStream(sock.getOutputStream());
+			reader = new BufferedMCLReader(fromMonet, StandardCharsets.UTF_8);
+			writer = new BufferedMCLWriter(toMonet, StandardCharsets.UTF_8);
+			writer.registerReader(reader);
+			reader.advance();
 
-		// Only assign to sock when everything went ok so far
-		con = sock;
+			// Only assign to sock when everything went ok so far
+			con = sock;
+		} catch (SSLException e) {
+			throw new MCLException("SSL error: " + e.getMessage(), e);
+		} catch (IOException e) {
+			throw new MCLException("Could not connect to " + tcpHost + ":" + port + ": " + e.getMessage(), e);
+		}
 	}
 
 	private Socket wrapTLS(Socket sock, Target.Validated validated) throws IOException {
--- a/src/main/java/org/monetdb/mcl/net/SecureSocket.java
+++ b/src/main/java/org/monetdb/mcl/net/SecureSocket.java
@@ -38,7 +38,7 @@ public class SecureSocket {
 			}
 			return wrapSocket(inner, validated, socketFactory, checkName);
 		} catch (CertificateException e) {
-			throw new SSLException(e.getMessage(), e);
+			throw new SSLException("TLS certificate rejected", e);
 		}
 	}