#944: MacRuby should throw an IOError exception when calls Socket#listen #setsockopt with closed socket. ----------------------------------+----------------------------------------- Reporter: watson1978@… | Owner: lsansonetti@… Type: defect | Status: new Priority: minor | Milestone: Component: MacRuby | Keywords: ----------------------------------+----------------------------------------- Test Script: {{{ #!ruby require 'socket' p "** listen" sock = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0) sock.close begin sock.listen(5) rescue IOError => err p err end p "** setsockopt" sock = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0) sock.close linger = [0, 0].pack("ii") begin sock.setsockopt(Socket::SOL_SOCKET, Socket::SO_LINGER, linger) rescue IOError => err p err end }}} Result: {{{ $ ruby -v test_socket.rb ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0] "** listen" #<IOError: closed stream> "** setsockopt" #<IOError: closed stream> $ ruby19 -v test_socket.rb ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.4.0] "** listen" #<IOError: closed stream> "** setsockopt" #<IOError: closed stream> $ macruby -v test_socket.rb MacRuby 0.8 (ruby 1.9.2) [universal-darwin10.0, x86_64] "** listen" /Users/watson/tmp/test_socket.rb:12:in `<main>': Bad file descriptor - listen(2) (Errno::EBADF) }}} -- Ticket URL: <http://www.macruby.org/trac/ticket/944> MacRuby <http://macruby.org/>