diff --git a/src/share/classes/java/net/Socket.java b/src/share/classes/java/net/Socket.java index d2bdd529f141313e38929db8da42cc3c70135eb1..91ec5862b34890f0b473af17b0fc683771fa89cf 100644 --- a/src/share/classes/java/net/Socket.java +++ b/src/share/classes/java/net/Socket.java @@ -420,15 +420,14 @@ class Socket implements java.io.Closeable { createImpl(stream); if (localAddr != null) bind(localAddr); - if (address != null) - connect(address); - } catch (IOException e) { - close(); - throw e; - } finally { - // if bind() or connect threw a runtime exception - if ((localAddr != null && !bound) || (address != null && !connected)) + connect(address); + } catch (IOException | IllegalArgumentException | SecurityException e) { + try { close(); + } catch (IOException ce) { + e.addSuppressed(ce); + } + throw e; } }