diff --git a/gateleen-routing/src/main/java/org/swisspush/gateleen/routing/Forwarder.java b/gateleen-routing/src/main/java/org/swisspush/gateleen/routing/Forwarder.java index f5485552..3a049add 100755 --- a/gateleen-routing/src/main/java/org/swisspush/gateleen/routing/Forwarder.java +++ b/gateleen-routing/src/main/java/org/swisspush/gateleen/routing/Forwarder.java @@ -503,7 +503,7 @@ private Handler> getAsyncHttpClientResponseHandl final LoggingWriteStream loggingWriteStream = new LoggingWriteStream(req.response(), loggingHandler, false); final Pump pump = Pump.pump(cRes, loggingWriteStream); - cRes.endHandler(v -> { + Handler cResEndHandler = v -> { try { req.response().end(); @@ -516,7 +516,14 @@ private Handler> getAsyncHttpClientResponseHandl // ignore because maybe already closed } vertx.runOnContext(event -> loggingHandler.log()); - }); + }; + try { + cRes.endHandler(cResEndHandler); + } catch (IllegalStateException ex) { + log.warn("cRes.endHandler() failed", ex); + respondError(req, StatusCode.INTERNAL_SERVER_ERROR); + return; + } pump.start(); Runnable unpump = () -> {