Bug #1696 » protocol.rb.patch
| /usr/local/lib/ruby/1.8/net/protocol.rb 2009-06-27 19:40:38.000000000 +0100 | ||
|---|---|---|
|
begin
|
||
|
while read_bytes + @rbuf.size < len
|
||
|
dest << (s = rbuf_consume(@rbuf.size))
|
||
|
dest << (s = rbuf_consume(nil))
|
||
|
read_bytes += s.size
|
||
|
rbuf_fill
|
||
| ... | ... | |
|
begin
|
||
|
while true
|
||
|
dest << (s = rbuf_consume(@rbuf.size))
|
||
|
dest << (s = rbuf_consume(nil))
|
||
|
read_bytes += s.size
|
||
|
rbuf_fill
|
||
| ... | ... | |
|
rescue EOFError
|
||
|
raise unless ignore_eof
|
||
|
return rbuf_consume(@rbuf.size)
|
||
|
return rbuf_consume(nil)
|
||
|
end
|
||
|
end
|
||
| ... | ... | |
|
def rbuf_fill
|
||
|
timeout(@read_timeout) {
|
||
|
@rbuf << @io.sysread(1024)
|
||
|
}
|
||
|
if IO.select( [ @io ], nil, nil, @read_timeout )
|
||
|
@rbuf << @io.sysread(1024000)
|
||
|
else
|
||
|
raise Timeout::Error, "read timeout"
|
||
|
end
|
||
|
end
|
||
|
def rbuf_consume(len)
|
||
|
s = @rbuf.slice!(0, len)
|
||
|
if len.nil? or @rbuf.size == len
|
||
|
s = @rbuf
|
||
|
@rbuf = ''
|
||
|
else
|
||
|
s = @rbuf.slice!(0, len)
|
||
|
end
|
||
|
@debug_output << %Q[-> #{s.dump}\n] if @debug_output
|
||
|
s
|
||
- « Previous
- 1
- 2
- Next »