diff -urN mysql-connector-java-5.0-nightly-20060808/src/com/mysql/jdbc/StandardSocketFactory.java mysql-connector-java-5.0-nightly-20060808-patched/src/com/mysql/jdbc/StandardSocketFactory.java --- mysql-connector-java-5.0-nightly-20060808/src/com/mysql/jdbc/StandardSocketFactory.java 2006-08-08 01:02:00.000000000 +0200 +++ mysql-connector-java-5.0-nightly-20060808-patched/src/com/mysql/jdbc/StandardSocketFactory.java 2006-08-09 09:46:11.000000000 +0200 @@ -153,8 +153,11 @@ } if (rawSocket == null) { - throw new SocketException(caughtWhileConnecting - .toString()); + if (!(caughtWhileConnecting instanceof SocketException)) { + throw new SocketException(caughtWhileConnecting.toString()); + } + + throw (SocketException) caughtWhileConnecting; } } else { // must explicitly state this due to classloader issues @@ -195,16 +198,20 @@ } if (rawSocket == null) { - throw new SocketException(caughtWhileConnecting - .toString()); + Throwable cause = caughtWhileConnecting.getCause(); + if (!(cause instanceof SocketException || cause instanceof SocketTimeoutException)) { + throw new SocketException(cause.toString()); + } + + throw (IOException) cause; } } catch (Throwable t) { - if (!(t instanceof SocketException)) { + if (!(t instanceof SocketException || t instanceof SocketTimeoutException)) { throw new SocketException(t.toString()); } - throw (SocketException) t; + throw (IOException) t; } }