diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/post/SendErrorFilter.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/post/SendErrorFilter.java index af9c901a..03f7cb65 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/post/SendErrorFilter.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/post/SendErrorFilter.java @@ -87,6 +87,7 @@ public class SendErrorFilter extends ZuulFilter { if (dispatcher != null) { ctx.set(SEND_ERROR_FILTER_RAN, true); if (!ctx.getResponse().isCommitted()) { + ctx.setResponseStatusCode(exception.nStatusCode); dispatcher.forward(request, ctx.getResponse()); } } diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/post/SendErrorFilterTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/post/SendErrorFilterTests.java index 643a0152..bd3daa56 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/post/SendErrorFilterTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/post/SendErrorFilterTests.java @@ -29,6 +29,7 @@ import org.springframework.mock.web.MockHttpServletResponse; import com.netflix.zuul.context.RequestContext; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; @@ -82,4 +83,17 @@ public class SendErrorFilterTests { filter.run(); assertFalse("shouldFilter returned true", filter.shouldFilter()); } + + @Test + public void setResponseCode() { + SendErrorFilter filter = createSendErrorFilter(new MockHttpServletRequest()); + filter.run(); + + RequestContext ctx = RequestContext.getCurrentContext(); + int resCode = ctx.getResponse().getStatus(); + int ctxCode = ctx.getResponseStatusCode(); + + assertEquals("invalid response code: " + resCode, HttpStatus.NOT_FOUND.value(), resCode); + assertEquals("invalid response code in RequestContext: " + ctxCode, resCode, ctxCode); + } }