Hi,
I have the following problem with Comet. I have a long request, and I
asynchronously write data to the output stream of the response while the
request is between the BEGIN and END/ERROR events. However, the writes
do NOT occur while IN a READ request, but are triggered by other events
on the server side.
When I send a lot of data, the send buffer fills up, and the channel
needs to be registered with the poller for the OP_WRITE event. However,
this does not happen. In NioBlockingSelector line 69, there is the
following code that is supposed to register the channel for OP_WRITE:
if ( att.getLatch()==null ||
att.getLatch().getCount()==0) att.startLatch(1);
if ( att.interestOps() == 0)
socket.getPoller().add(socket,SelectionKey.OP_WRITE);
att.getLatch().await(writeTimeout,TimeUnit.MILLISECONDS);
However, since I'm not in a comet READ event, att.interestOps() == 1
(and not 0), therefore the event is never registered. 60 seconds later I
get a SocketTimeoutException.
I figure this is probably a bug, but I thought I'd ask here just to be sure.
Regards,
Sebastiaan
---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]