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;