Skip to content

Commit

Permalink
Reset async response so handler gets the opportunity to set status
Browse files Browse the repository at this point in the history
Signed-off-by: Arjan Tijms <arjan.tijms@gmail.com>
  • Loading branch information
arjantijms committed May 29, 2022
1 parent b1f7346 commit 098622e
Showing 1 changed file with 30 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/*
* Copyright (c) 2022, 2022 Contributors to the Eclipse Foundation.
* Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
Expand All @@ -16,13 +17,6 @@

package org.apache.catalina.connector;

import org.apache.catalina.ContainerEvent;
import org.apache.catalina.LogFacade;
import org.apache.catalina.Globals;
import org.apache.catalina.core.*;

import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.EventListener;
Expand All @@ -39,6 +33,29 @@
import java.util.logging.Level;
import java.util.logging.Logger;

import org.apache.catalina.ContainerEvent;
import org.apache.catalina.Globals;
import org.apache.catalina.LogFacade;
import org.apache.catalina.core.ApplicationDispatcher;
import org.apache.catalina.core.ApplicationHttpRequest;
import org.apache.catalina.core.ApplicationHttpResponse;
import org.apache.catalina.core.DispatchTargetsInfo;
import org.apache.catalina.core.StandardContext;

import jakarta.servlet.AsyncContext;
import jakarta.servlet.AsyncEvent;
import jakarta.servlet.AsyncListener;
import jakarta.servlet.DispatcherType;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletRequestEvent;
import jakarta.servlet.ServletRequestListener;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

class AsyncContextImpl implements AsyncContext {
// Note...this constant is also defined in org.glassfish.weld.WeldDeployer. If it changes here it must
// change there as well. The reason it is duplicated is so that a dependency from web-core to gf-weld-connector
Expand Down Expand Up @@ -614,6 +631,12 @@ void notifyAsyncListeners(AsyncEventType asyncEventType, Throwable t) {
AsyncEvent asyncEvent = new AsyncEvent(
this, asyncListenerContext.getRequest(),
asyncListenerContext.getResponse(), t);

if (asyncListenerContext.getResponse() instanceof HttpServletResponse) {
((HttpServletResponse)asyncListenerContext.getResponse()).setStatus(
HttpServletResponse.SC_OK);
}

try {
switch (asyncEventType) {
case COMPLETE:
Expand Down

0 comments on commit 098622e

Please sign in to comment.