In message <20050320203133.GA1012 / ensemble.local>, `Sam Roberts <sroberts / uniserve.com>' wrote: > Is there really a case when you would want every listener to have a > different port # assigned by the network stack? If not, maybe setting > :Port to 0 should have the above behaviour. I prefer nil than 0 for this behavior. It the specified port is nil, listening port will be chosen and tried to bind until succeed like this: module WEBrick class GenericServer def listen(addr, port) return auto_listen(addr) unless port @listeners += Utils.create_listeners(addr, port, @logger) end def auto_listen(addr) port = 65535 while port > 1023 begin listen(addr, port) rescue Errno::EACCES, Errno::EADDRINUSE port -= 1 retry end @config[:Port] = port return end end end end If nobody opposes, I can make it as a default behavior of WEBrick. -- gotoyuzo