This commit is contained in:
Redkale
2018-05-30 19:43:46 +08:00
parent 7b5b0f34ff
commit e79fdd887c
2 changed files with 13 additions and 4 deletions

View File

@@ -62,8 +62,9 @@ public final class PrepareRunner implements Runnable {
public void completed(Integer count, Void attachment1) {
if (count < 1) {
response.request.offerReadBuffer(buffer);
response.finish(true);
channel.dispose();// response.init(channel); 在调用之前异常
response.removeChannel();
response.finish(true);
return;
}
// { //测试
@@ -85,8 +86,9 @@ public final class PrepareRunner implements Runnable {
@Override
public void failed(Throwable exc, Void attachment2) {
response.request.offerReadBuffer(buffer);
channel.dispose();// response.init(channel); 在调用之前异常
response.removeChannel();
response.finish(true);
channel.dispose(); // response.init(channel); 可能在调用之前异常
if (exc != null && context.logger.isLoggable(Level.FINEST)) {
context.logger.log(Level.FINEST, "Servlet Handler read channel erroneous, forece to close channel ", exc);
}
@@ -94,8 +96,9 @@ public final class PrepareRunner implements Runnable {
});
} catch (Exception te) {
response.request.offerReadBuffer(buffer);
channel.dispose();// response.init(channel); 在调用之前异常
response.removeChannel();
response.finish(true);
channel.dispose(); // response.init(channel); 可能在调用之前异常
if (te != null && context.logger.isLoggable(Level.FINEST)) {
context.logger.log(Level.FINEST, "Servlet read channel erroneous, forece to close channel ", te);
}

View File

@@ -251,7 +251,11 @@ public final class Transport {
if (!queue.isEmpty()) {
AsyncConnection conn;
while ((conn = queue.poll()) != null) {
if (conn.isOpen()) return CompletableFuture.completedFuture(conn);
if (conn.isOpen()) {
return CompletableFuture.completedFuture(conn);
} else {
conn.dispose();
}
}
}
CompletableFuture future = new CompletableFuture();
@@ -342,6 +346,8 @@ public final class Transport {
if (conn.isOpen()) {
TransportNode node = findTransportNode(conn.getRemoteAddress());
if (node == null || !node.conns.offer(conn)) conn.dispose();
} else {
conn.dispose();
}
} else {
conn.dispose();