Replace close method with Undertow exchange listener
The Undertow HttpServerExchange has a complete listener which we can use instead of the close() method UndertowServerHttpRequest.
This commit is contained in:
@@ -76,13 +76,11 @@ public class UndertowHttpHandlerAdapter extends HttpHandlerAdapterSupport
|
||||
if (!exchange.isResponseStarted() && exchange.getStatusCode() <= 500) {
|
||||
exchange.setStatusCode(500);
|
||||
}
|
||||
request.close();
|
||||
exchange.endExchange();
|
||||
}
|
||||
@Override
|
||||
public void onComplete() {
|
||||
logger.debug("Successfully completed request");
|
||||
request.close();
|
||||
exchange.endExchange();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -58,7 +58,7 @@ public class UndertowServerHttpRequest extends AbstractServerHttpRequest {
|
||||
super(initUri(exchange), initHeaders(exchange));
|
||||
this.exchange = exchange;
|
||||
this.body = new RequestBodyPublisher(exchange, dataBufferFactory);
|
||||
this.body.registerListener();
|
||||
this.body.registerListener(exchange);
|
||||
}
|
||||
|
||||
private static URI initUri(HttpServerExchange exchange) {
|
||||
@@ -107,9 +107,6 @@ public class UndertowServerHttpRequest extends AbstractServerHttpRequest {
|
||||
return Flux.from(this.body);
|
||||
}
|
||||
|
||||
void close() {
|
||||
this.body.onAllDataRead();
|
||||
}
|
||||
|
||||
private static class RequestBodyPublisher extends AbstractListenerReadPublisher<DataBuffer> {
|
||||
|
||||
@@ -134,7 +131,11 @@ public class UndertowServerHttpRequest extends AbstractServerHttpRequest {
|
||||
this.dataBufferFactory = dataBufferFactory;
|
||||
}
|
||||
|
||||
private void registerListener() {
|
||||
private void registerListener(HttpServerExchange exchange) {
|
||||
exchange.addExchangeCompleteListener((ex, next) -> {
|
||||
onAllDataRead();
|
||||
next.proceed();
|
||||
});
|
||||
this.requestChannel.getReadSetter().set(this.readListener);
|
||||
this.requestChannel.getCloseSetter().set(this.closeListener);
|
||||
this.requestChannel.resumeReads();
|
||||
|
||||
Reference in New Issue
Block a user