[MacRuby] #958: Errno::EAGAIN occurs when read data from socket within Webrick.
MacRuby
ruby-noreply at macosforge.org
Sat Oct 16 08:55:26 PDT 2010
#958: Errno::EAGAIN occurs when read data from socket within Webrick.
----------------------------------+-----------------------------------------
Reporter: watson1978@… | Owner: lsansonetti@…
Type: defect | Status: new
Priority: major | Milestone:
Component: MacRuby | Keywords:
----------------------------------+-----------------------------------------
Test Script:
{{{
#!ruby
# test_webrick_server.rb
require "webrick"
class Echo < WEBrick::GenericServer
def run(sock)
while line = sock.gets
p "[server] : get = " + line
sock.print line
end
p :end
end
end
server = Echo.new({
:BindAddress => "127.0.0.1", :Port => 4000,
})
Signal.trap('INT') { server.shutdown }
server.start
}}}
{{{
#!ruby
# test_client.rb
require "socket"
host = "127.0.0.1"
port = 4000
c = TCPSocket.open(host, port)
["foo\n", "bar\n"].each do |item|
c.print item
p c.gets
end
["1234", "aaa", "bbb"].each do |item|
c.puts item
p c.gets
end
}}}
Result:
{{{
$ DYLD_LIBRARY_PATH=. ./macruby -I./lib test_webrick_server.rb
[2010-10-17 00:43:34] INFO WEBrick 1.3.1
[2010-10-17 00:43:34] INFO ruby 1.9.2 (2008-06-03) [universal-darwin10.0]
[2010-10-17 00:43:34] INFO Echo#start: pid=953 port=4000
"[server] : get = foo\n"
[2010-10-17 00:43:37] ERROR Errno::EAGAIN: Resource temporarily
unavailable - read() failed
/Users/watson/src/macruby-dev/test_webrick_server.rb:5:in `run:'
/Users/watson/src/macruby-dev/lib/webrick/server.rb:183:in `block'
}}}
It works as expected if I do not use Webrick.
{{{
#!ruby
# test_socket_server.rb
require "socket"
host = "127.0.0.1"
port = 4000
server = TCPServer.open(port)
s = server.accept
while line = s.gets
p "[server] : gets = " + line
s.print line
end
}}}
{{{
$ DYLD_LIBRARY_PATH=. ./macruby -I./lib test_socket_server.rb
"[server] : gets = foo\n"
"[server] : gets = bar\n"
"[server] : gets = 1234\n"
"[server] : gets = aaa\n"
"[server] : gets = bbb\n"
}}}
--
Ticket URL: <http://www.macruby.org/trac/ticket/958>
MacRuby <http://macruby.org/>
More information about the macruby-tickets
mailing list