From 2fa1180332708ce309714e71634c834776cedeed Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Fri, 1 Nov 2024 13:22:07 -0700 Subject: [PATCH] Make NamedPipeSocket.connect a no-op to fix connection exceptions Update `NamedPipeSocket` so that `connect` methods are now no-ops. This restores the behavior of Spring Boot 3.3 which previously handled the case by overriding `ConnectionSocketFactory.connectSocket`. The newer HTTP client code uses the `DetachedSocketFactory` interface which doesn't offer a method that we can override, so instead we must change the socket implementation itself. Fixes gh-42952 --- .../buildpack/platform/socket/NamedPipeSocket.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/socket/NamedPipeSocket.java b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/socket/NamedPipeSocket.java index f68fa3cb917..91ca374953e 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/socket/NamedPipeSocket.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/socket/NamedPipeSocket.java @@ -20,6 +20,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; +import java.net.SocketAddress; import java.nio.ByteBuffer; import java.nio.channels.AsynchronousByteChannel; import java.nio.channels.AsynchronousCloseException; @@ -73,6 +74,16 @@ public class NamedPipeSocket extends Socket { } } + @Override + public void connect(SocketAddress endpoint) throws IOException { + // No-op + } + + @Override + public void connect(SocketAddress endpoint, int timeout) throws IOException { + // No-op + } + @Override public InputStream getInputStream() { return Channels.newInputStream(this.channel);