This is an automated email from the ASF dual-hosted git repository. papegaaij pushed a commit to branch wicket-6831-w8 in repository https://gitbox.apache.org/repos/asf/wicket.git
commit e5cd09ba8c1c02f213b1e47bbe9dff0e626120ea Author: Emond Papegaaij <[email protected]> AuthorDate: Mon Sep 21 11:47:23 2020 +0200 WICKET-6831: flush before detach in websocket, log detach exceptions (cherry picked from commit 78b7cf6612b167997f810bf89065f5755ae155a8) --- .../apache/wicket/request/cycle/RequestCycle.java | 17 +------------ .../wicket/protocol/ws/AbstractUpgradeFilter.java | 29 ++++++++++++++++------ 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java b/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java index 1a88ba3..3823f59 100644 --- a/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java +++ b/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java @@ -681,22 +681,7 @@ public class RequestCycle implements IRequestCycle, IEventSink */ private void handleDetachException(RuntimeException exception) { - boolean isBufferedResponse = true; - if (Application.exists()) - { - isBufferedResponse = Application.get().getRequestCycleSettings().getBufferResponse(); - } - - //if application is using a buffered response strategy, - //then we display exception to user. - if (isBufferedResponse) - { - throw exception; - } - else - { - log.error("Error detaching RequestCycle", exception); - } + log.error("Error detaching RequestCycle", exception); } /** diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/AbstractUpgradeFilter.java b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/AbstractUpgradeFilter.java index 475a5af..194e63f 100644 --- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/AbstractUpgradeFilter.java +++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/AbstractUpgradeFilter.java @@ -57,7 +57,6 @@ public class AbstractUpgradeFilter extends WicketFilter final FilterChain chain) throws IOException, ServletException { - // Assume we are able to handle the request boolean res = true; @@ -67,17 +66,31 @@ public class AbstractUpgradeFilter extends WicketFilter { res = true; } - else if (requestCycle.processRequestAndDetach() || httpServletResponse.isCommitted()) - { - webResponse.flush(); - } else { - if (chain != null) + boolean reqProcessed = false; + try + { + reqProcessed = requestCycle.processRequest() || httpServletResponse.isCommitted(); + if (reqProcessed) + { + webResponse.flush(); + } + } + finally { - chain.doFilter(httpServletRequest, httpServletResponse); + requestCycle.detach(); + } + + if (!reqProcessed) + { + if (chain != null) + { + // invoke next filter from within Wicket context + chain.doFilter(httpServletRequest, httpServletResponse); + } + res = false; } - res = false; } return res;
