From: Denis R. <si...@ya...> - 2006-02-26 21:14:31
|
Hi, Would it be possible to refine the detection of idle connections, so if jetty is able to write successfully to client's connection then that connection should not be considered idle, even if the client is not sending any data to the server. The suggested fix for file org/mortbay/jetty/nio/SelectChannelConnector.java: for class HttpEndPoint: public int flush(Buffer header, Buffer buffer, Buffer trailer) throws IOException { int l = super.flush(header, buffer, trailer); _writable = l > 0; if (_writable) { _timeoutTask._wasFlushed = true; } return l; } /* ------------------------------------------------------------ */ /* */ public int flush(Buffer buffer) throws IOException { int l = super.flush(buffer); _writable = l > 0; if (_writable) { _timeoutTask._wasFlushed = true; } return l; } for class IdleTask: private volatile boolean _wasFlushed; /* ------------------------------------------------------------ */ /* * @see org.mortbay.thread.Timeout.Task#expire() */ public void expire() { boolean wasFlushed = _wasFlushed; _wasFlushed = false; if (wasFlushed) { _selectSet.scheduleIdle(this); } else { try { close(); } catch (IOException e) { Log.ignore(e); } } } Regards, Denis |