This is an automated email from the ASF dual-hosted git repository.

papegaaij pushed a commit to branch wicket-6831
in repository https://gitbox.apache.org/repos/asf/wicket.git


The following commit(s) were added to refs/heads/wicket-6831 by this push:
     new 78b7cf6  WICKET-6831: flush before detach in websocket, log detach 
exceptions
78b7cf6 is described below

commit 78b7cf6612b167997f810bf89065f5755ae155a8
Author: Emond Papegaaij <[email protected]>
AuthorDate: Mon Sep 21 11:47:23 2020 +0200

    WICKET-6831: flush before detach in websocket, log detach exceptions
---
 .../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 38b7f93..b9f9841 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
@@ -684,22 +684,7 @@ public class RequestCycle implements IRequestCycle, 
IEventSink, IMetadataContext
         */
        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 1ab39c9..4b596ab 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
@@ -58,7 +58,6 @@ public class AbstractUpgradeFilter extends WicketFilter
                        final FilterChain chain)
                throws IOException, ServletException
        {
-
                // Assume we are able to handle the request
                boolean res = true;
 
@@ -68,17 +67,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;

Reply via email to