Skip to content

Commit 44a7d6b

Browse files
Merge pull request #58 from stuartwdouglas/flush-problem
Fix issue with flush in async IO
2 parents 8c3b362 + 8bbea47 commit 44a7d6b

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

servlet/src/main/java/io/undertow/servlet/spec/ServletOutputStreamImpl.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,13 @@ public void flush() throws IOException {
206206
}
207207
try {
208208
if (pooledBuffer != null) {
209-
exchange.writeBlocking(pooledBuffer, false);
210-
pooledBuffer = null;
209+
if (listener == null) {
210+
exchange.writeBlocking(pooledBuffer, false);
211+
pooledBuffer = null;
212+
} else {
213+
exchange.writeAsync(pooledBuffer, false, listenerCallback, null);
214+
pooledBuffer = null;
215+
}
211216
}
212217
} catch (Exception e) {
213218
if (pooledBuffer != null) {

vertx/src/main/java/io/undertow/vertx/VertxHttpExchange.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,7 @@ public <T> void writeAsync0(ByteBuf data, boolean last, IoCallback<T> callback,
659659
request.response().drainHandler(new Handler<Void>() {
660660
@Override
661661
public void handle(Void event) {
662+
request.response().drainHandler(null);
662663
try {
663664
if (last) {
664665
responseDone = true;
@@ -671,7 +672,6 @@ public void handle(Void event) {
671672
request.response().write(createBuffer(data));
672673
}
673674
queueWriteListener(callback, context, last);
674-
request.response().drainHandler(null);
675675
} catch (Exception e) {
676676
if (data != null && data.refCnt() > 0) {
677677
data.release();

0 commit comments

Comments
 (0)