From: "drbrain (Eric Hodel)" Date: 2012-07-04T11:07:14+09:00 Subject: [ruby-core:46157] [ruby-trunk - Feature #6583] Improve socket exception message when bind() fails Issue #6583 has been updated by drbrain (Eric Hodel). File socket.improve_bind_error.2.patch added This updated patch adds three new methods rsock_sys_fail_host_port, rsock_sys_fail_path and rsock_sys_fail_sockaddr for raising exceptions from more than bind(). Additionally, rb_sys_fail() calls were audited and names of system calls were added where they were missing, and updated where incomplete (lacking manual page designator). ---------------------------------------- Feature #6583: Improve socket exception message when bind() fails https://bugs.ruby-lang.org/issues/6583#change-27777 Author: drbrain (Eric Hodel) Status: Open Priority: Normal Assignee: Category: ext Target version: 2.0.0 =begin If the user tries to bind a port that is already in use the user does not receive any notification of which port (and address) failed. When multiple connections are being made makes it difficult to determine which connection was not correctly bound. For example, WEBrick binds both IPv4 and IPv6 sockets. If one of the ports is already bound you will receive a confusing error message. This patch adds the port and address to the error message: $ cat test.rb require 'socket' TCPServer.new '0.0.0.0', 5900 $ make runruby ./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems ./test.rb ./test.rb:3:in `initialize': Address already in use - bind(2) for "0.0.0.0" port 5900 (Errno::EADDRINUSE) from ./test.rb:3:in `new' from ./test.rb:3:in `
' make: *** [runruby] Error 1 Current behavior: $ ruby test.rb test.rb:3:in `initialize': Address already in use - bind(2) (Errno::EADDRINUSE) from test.rb:3:in `new' from test.rb:3:in `
' =end -- http://bugs.ruby-lang.org/