Skip to content

Commit

Permalink
8299827: Add resolved IP address in connection exception for sockets
Browse files Browse the repository at this point in the history
Backport-of: 92d8326
  • Loading branch information
Andrey Turbanov authored and TheRealMDoerr committed Aug 24, 2023
1 parent e830464 commit 40add10
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 15 deletions.
13 changes: 2 additions & 11 deletions src/java.base/share/classes/sun/net/util/SocketExceptions.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -67,16 +67,7 @@ public static IOException of(IOException e, SocketAddress addr) {
}

private static IOException ofInet(IOException e, InetSocketAddress addr) {
int port = addr.getPort();
String host = addr.getHostString();
StringBuilder sb = new StringBuilder();
sb.append(e.getMessage());
sb.append(": ");
sb.append(host);
sb.append(':');
sb.append(Integer.toString(port));
String enhancedMsg = sb.toString();
return create(e, enhancedMsg);
return create(e, String.join(": ", e.getMessage(), addr.toString()));
}

private static IOException ofUnixDomain(IOException e, UnixDomainSocketAddress addr) {
Expand Down
10 changes: 6 additions & 4 deletions test/jdk/java/net/Socket/ExceptionText.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -57,6 +57,7 @@
*/

import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.nio.channels.AsynchronousSocketChannel;
Expand All @@ -83,6 +84,7 @@ public static void main(String args[]) throws Exception {
static final InetSocketAddress dest = Utils.refusingEndpoint();
static final String PORT = ":" + Integer.toString(dest.getPort());
static final String HOST = dest.getHostString();
static final InetAddress ADDRESS = dest.getAddress();

static void test(boolean withProperty) {
// Socket
Expand All @@ -104,11 +106,11 @@ static void checkResult(IOException e, boolean withProperty) {
throw new RuntimeException("Test failed: exception contains address info");
}
} else {
if (!msg.contains(HOST) || !msg.contains(PORT)) {
if (!msg.contains(HOST) || !msg.contains(PORT) ||
!msg.contains(ADDRESS.getHostAddress())) {
if (e instanceof ClosedChannelException)
return; // has no detail msg
System.err.println("msg = " + msg);
throw new RuntimeException("Test failed: exception does not contain address info");
throw new RuntimeException("Test failed: message '" + msg + "' is missing address info " + dest);
}
}
}
Expand Down

0 comments on commit 40add10

Please sign in to comment.