if (processor.isAsync()) {
state = processor.asyncPostProcess();
}
- if (state != SocketState.LONG && state != SocketState.ASYNC_END) {
+ if (state == SocketState.OPEN || state == SocketState.CLOSED) {
release(socket);
if (state == SocketState.OPEN) {
socket.getPoller().add(socket);
}
- } else if (state == SocketState.ASYNC_END) {
- // No further work required
} else if (state == SocketState.LONG) {
- att.setAsync(true); // Re-enable timeouts
+ if (processor.isAsync()) {
+ att.setAsync(true); // Re-enable timeouts
+ } else {
+ // Comet
+ if (log.isDebugEnabled()) log.debug("Keeping processor["+processor);
+ //add correct poller events here based on Comet stuff
+ socket.getPoller().add(socket,att.getCometOps());
+ }
} else {
- if (log.isDebugEnabled()) log.debug("Keeping processor["+processor);
- //add correct poller events here based on Comet stuff
- socket.getPoller().add(socket,att.getCometOps());
+ // state == SocketState.ASYNC_END
+ // No further work required
}
}
}
reg(key,ka,0);//avoid multiple calls, this gets reregistered after invocation
//if (!processSocket(ka.getChannel(), SocketStatus.OPEN_CALLBACK)) processSocket(ka.getChannel(), SocketStatus.DISCONNECT);
if (!processSocket(ka.getChannel(), SocketStatus.OPEN, true)) processSocket(ka.getChannel(), SocketStatus.DISCONNECT, true);
- }else if ((ka.interestOps()&SelectionKey.OP_READ) == SelectionKey.OP_READ ||
+ } else if ((ka.interestOps()&SelectionKey.OP_READ) == SelectionKey.OP_READ ||
(ka.interestOps()&SelectionKey.OP_WRITE) == SelectionKey.OP_WRITE) {
//only timeout sockets that we are waiting for a read from
long delta = now - ka.getLastAccess();
long nextTime = now+(timeout-delta);
nextExpiration = (nextTime < nextExpiration)?nextTime:nextExpiration;
}
- }else if (ka.isAsync()) {
+ } else if (ka.isAsync() || ka.getComet()) {
long delta = now - ka.getLastAccess();
long timeout = (ka.getTimeout()==-1)?((long) socketProperties.getSoTimeout()):(ka.getTimeout());
boolean isTimedout = delta > timeout;
is configurable with a system property and is <code>8192</code>
by default. (kkolinko)
</add>
+ <fix>
+ <bug>50207</bug>: Ensure Comet timeout events are triggered. This bug
+ was a regression triggered by the fix for <bug>49884</bug>. (markt)
+ </fix>
</changelog>
</subsection>
<subsection name="Jasper">