You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pa...@apache.org on 2020/10/01 12:29:13 UTC

[wicket] 02/03: WICKET-6831: flush before detach in websocket, log detach exceptions

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 <em...@topicus.nl>
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;