Browse Source

Support all "connection reset" phrases in DisconnectedClientHelper

Prior to this commit, the isClientDisconnectedException() method in
DisconnectedClientHelper checked whether the message of the ultimate
exception in an exception chain contained one of the phrases "broken
pipe" or "connection reset by peer". However, that failed to match if
the exception message contained "Connection reset", which is the case
for the SocketException thrown by throwConnectionReset() in
sun.nio.ch.SocketChannelImpl.

This commit therefore replaces the "connection reset by peer" phrase
with "connection reset" in order to support all exception messages
containing "connection reset".

Closes gh-33064
pull/33350/head
Sam Brannen 2 years ago
parent
commit
203fa75196
  1. 5
      spring-web/src/main/java/org/springframework/web/util/DisconnectedClientHelper.java

5
spring-web/src/main/java/org/springframework/web/util/DisconnectedClientHelper.java

@ -36,7 +36,7 @@ import org.springframework.util.Assert; @@ -36,7 +36,7 @@ import org.springframework.util.Assert;
public class DisconnectedClientHelper {
private static final Set<String> EXCEPTION_PHRASES =
Set.of("broken pipe", "connection reset by peer");
Set.of("broken pipe", "connection reset");
private static final Set<String> EXCEPTION_TYPE_NAMES =
Set.of("AbortedException", "ClientAbortException",
@ -73,11 +73,12 @@ public class DisconnectedClientHelper { @@ -73,11 +73,12 @@ public class DisconnectedClientHelper {
/**
* Whether the given exception indicates the client has gone away.
* Known cases covered:
* <p>Known cases covered:
* <ul>
* <li>ClientAbortException or EOFException for Tomcat
* <li>EofException for Jetty
* <li>IOException "Broken pipe" or "connection reset by peer"
* <li>SocketException "Connection reset"
* </ul>
*/
public static boolean isClientDisconnectedException(Throwable ex) {

Loading…
Cancel
Save