Charles Oliver Nutter created JRUBY-6449: --------------------------------------------
Summary: connect_nonblock + select needs to eventually finishConnect Key: JRUBY-6449 URL: https://jira.codehaus.org/browse/JRUBY-6449 Project: JRuby Issue Type: Bug Affects Versions: JRuby 1.5.3 Environment: repros under os x 10.6.4 with 1.6.0_22 and centos 5.4 with 1.6.0_21 Reporter: Marc Slemko Assignee: Charles Oliver Nutter Priority: Minor Fix For: JRuby 1.6.7 After doing a connect_nonblock then it appears that IO.select will always return immediately and indicate the socket is not writable, when it should instead block and eventually return that it is writable, assuming the connection succeeds. Example below. Note that this does not appear to be a timing specific issue; the sleep 5 gives it plenty of time to connect, and the select does not wait for the timeout before returning. Presumably calling connect_nonblock again updates some state that was out of sync. >> @timeout=5 => 5 >> @host='google.com' => "google.com" >> @port=80 => 80 >> addrinfo = ::Socket::getaddrinfo(@host, @port).first => ["AF_INET", 80, "pz-in-f99.1e100.net", "74.125.127.99", 2, 2, 17] >> @handle = ::Socket.new(addrinfo[4], ::Socket::SOCK_STREAM, 0) => #<Socket:0x417470d0> >> sockaddr = ::Socket.sockaddr_in(addrinfo[1], addrinfo[3]) => "\020\002\000PJ}\177c\000\000\000\000\000\000\000\000" >> @handle.connect_nonblock(sockaddr) Errno::EINPROGRESS: Operation now in progress - Operation now in progress from (irb):18:in `connect_nonblock' from (irb):18 >> sleep(5) => 5 >> t=Time.now; IO.select(nil, [ @handle ], nil, @timeout); puts Time.now-t 0.001 => nil >> @handle.connect_nonblock(sockaddr) Errno::EISCONN: Socket is already connected - Socket is already connected from (irb):21:in `connect_nonblock' from (irb):21 >> IO.select(nil, [ @handle ], nil, @timeout) => [[], [#<Socket:0x417470d0>], []] -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://jira.codehaus.org/secure/ContactAdministrators!default.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