Sha256: 635f20e1b4af3ec83d7d6359e85b6596ca39f30778b759a1316973b1db019e1e

Contents?: true

Size: 1.69 KB

Versions: 92

Compression:

Stored size: 1.69 KB

Contents

require "webrick/utils"

module WEBrick
  module Utils
    ##
    # Creates TCP server sockets bound to +address+:+port+ and returns them.
    #
    # It will create IPV4 and IPV6 sockets on all interfaces.
    #
    # NOTE: We need to monkey patch this method because
    # create_listeners on Windows with Ruby > 2.0.0 does not
    # raise an error if we're already listening on a port.
    #
    def create_listeners(address, port, logger = nil)
      #
      # utils.rb -- Miscellaneous utilities
      #
      # Author: IPR -- Internet Programming with Ruby -- writers
      # Copyright 2001-2016, TAKAHASHI Masayoshi, GOTOU Yuuzou
      # Copyright 2002-2016, Internet Programming with Ruby writers. All rights
      # reserved.
      #
      # $IPR: utils.rb,v 1.10 2003/02/16 22:22:54 gotoyuzo Exp $
      unless port
        raise ArgumentError, "must specify port"
      end
      res = Socket.getaddrinfo(address, port,
                                Socket::AF_UNSPEC,   # address family
                                Socket::SOCK_STREAM, # socket type
                                0,                   # protocol
                                Socket::AI_PASSIVE)  # flag
      last_error = nil
      sockets = []
      res.each do |ai|
        begin
          logger.debug("TCPServer.new(#{ai[3]}, #{port})") if logger
          sock = TCPServer.new(ai[3], port)
          port = sock.addr[1] if port == 0
          Utils.set_close_on_exec(sock)
          sockets << sock
        rescue => ex
          logger.warn("TCPServer Error: #{ex}") if logger
          last_error = ex
        end
      end
      raise last_error if sockets.empty?
      sockets
    end
    module_function :create_listeners
  end
end

Version data entries

92 entries across 92 versions & 1 rubygems

Version Path
chef-14.15.6 lib/chef/monkey_patches/webrick-utils.rb
chef-14.15.6-universal-mingw32 lib/chef/monkey_patches/webrick-utils.rb
chef-14.14.29 lib/chef/monkey_patches/webrick-utils.rb
chef-14.14.29-universal-mingw32 lib/chef/monkey_patches/webrick-utils.rb
chef-14.14.25-universal-mingw32 lib/chef/monkey_patches/webrick-utils.rb
chef-14.14.25 lib/chef/monkey_patches/webrick-utils.rb
chef-14.14.14-universal-mingw32 lib/chef/monkey_patches/webrick-utils.rb
chef-14.14.14 lib/chef/monkey_patches/webrick-utils.rb
chef-15.1.36 lib/chef/monkey_patches/webrick-utils.rb
chef-15.1.36-universal-mingw32 lib/chef/monkey_patches/webrick-utils.rb
chef-14.13.11 lib/chef/monkey_patches/webrick-utils.rb
chef-15.0.300 lib/chef/monkey_patches/webrick-utils.rb
chef-15.0.298 lib/chef/monkey_patches/webrick-utils.rb
chef-15.0.293 lib/chef/monkey_patches/webrick-utils.rb
chef-14.12.9 lib/chef/monkey_patches/webrick-utils.rb
chef-14.12.3 lib/chef/monkey_patches/webrick-utils.rb
chef-13.12.14 lib/chef/monkey_patches/webrick-utils.rb
chef-14.11.21 lib/chef/monkey_patches/webrick-utils.rb
chef-14.10.9 lib/chef/monkey_patches/webrick-utils.rb
chef-14.9.13 lib/chef/monkey_patches/webrick-utils.rb