From 7e232f989ba5d947dc286104b44d0e9ce580a2af Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Tue, 25 Jul 2017 10:30:11 +0200 Subject: [PATCH] Improve check for "Broken pipe" error message Issue: SPR-15802 --- .../web/server/adapter/HttpWebHandlerAdapter.java | 6 ++++-- .../sockjs/transport/session/AbstractSockJsSession.java | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/web/server/adapter/HttpWebHandlerAdapter.java b/spring-web/src/main/java/org/springframework/web/server/adapter/HttpWebHandlerAdapter.java index 5be3eadada..6992537c92 100644 --- a/spring-web/src/main/java/org/springframework/web/server/adapter/HttpWebHandlerAdapter.java +++ b/spring-web/src/main/java/org/springframework/web/server/adapter/HttpWebHandlerAdapter.java @@ -184,8 +184,10 @@ public class HttpWebHandlerAdapter extends WebHandlerDecorator implements HttpHa } private boolean indicatesDisconnectedClient(Throwable ex) { - return ("Broken pipe".equalsIgnoreCase(NestedExceptionUtils.getMostSpecificCause(ex).getMessage()) || - DISCONNECTED_CLIENT_EXCEPTIONS.contains(ex.getClass().getSimpleName())); + String message = NestedExceptionUtils.getMostSpecificCause(ex).getMessage(); + message = (message != null ? message.toLowerCase() : ""); + String className = ex.getClass().getSimpleName(); + return (message.contains("broken pipe") || DISCONNECTED_CLIENT_EXCEPTIONS.contains(className)); } } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/session/AbstractSockJsSession.java b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/session/AbstractSockJsSession.java index 77a41a6a58..11286e0d0f 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/session/AbstractSockJsSession.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/session/AbstractSockJsSession.java @@ -361,8 +361,10 @@ public abstract class AbstractSockJsSession implements SockJsSession { } private boolean indicatesDisconnectedClient(Throwable ex) { - return ("Broken pipe".equalsIgnoreCase(NestedExceptionUtils.getMostSpecificCause(ex).getMessage()) || - DISCONNECTED_CLIENT_EXCEPTIONS.contains(ex.getClass().getSimpleName())); + String message = NestedExceptionUtils.getMostSpecificCause(ex).getMessage(); + message = (message != null ? message.toLowerCase() : ""); + String className = ex.getClass().getSimpleName(); + return (message.contains("broken pipe") || DISCONNECTED_CLIENT_EXCEPTIONS.contains(className)); }