ChannelStream#readpartial does sub-optimal reads when no bytes buffered -----------------------------------------------------------------------
Key: JRUBY-3666 URL: http://jira.codehaus.org/browse/JRUBY-3666 Project: JRuby Issue Type: Improvement Reporter: Wayne Meissner Assignee: Thomas E Enebo Priority: Minor Fix For: JRuby 1.4 In the case where a socket is opened, and only readpartial operations are used on it, or the buffers are flushed, ChannelStream#readpartial will only ever do unbuffered reads. i.e. if the read buffer is empty when readpartial() is called, it does not refill it, and then copy from the buffer to the dst buffer, it just reads directly from the channel to the dst buffer. The offending bit of code: {code} if (buffer.hasRemaining()) { // already have some bytes buffered, just return those ByteList result = bufferedRead(Math.min(buffer.remaining(), number)); if (ungotc >= 0) { result.prepend((byte)ungotc); ungotc = -1; } return result; } else { // otherwise, we try an unbuffered read to get whatever's available return read(number); } {code} Thats been there for many versions, so its not exactly an urgent fix. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email