lib/ohai/mixin/http_helper.rb in ohai-18.0.26 vs lib/ohai/mixin/http_helper.rb in ohai-18.1.0

- old
+ new

@@ -1,64 +1,64 @@ -# frozen_string_literal: true -# -# Copyright:: Copyright (c) Chef Software Inc. -# License:: Apache License, Version 2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -require "socket" unless defined?(Socket) - -module Ohai - module Mixin - module HttpHelper - - # see if we can socket connect to an address/port - # - # @param addr [String] the address to connect to - # @param port [Integer] the port to connect to - # @param timeout [Integer] the seconds before timing out - # - # @return [Boolean] can we connect? - def can_socket_connect?(addr, port, timeout = 2) - t = Socket.new(Socket::Constants::AF_INET, Socket::Constants::SOCK_STREAM, 0) - begin - saddr = Socket.pack_sockaddr_in(port, addr) - rescue SocketError => e # generally means dns resolution error - logger.trace("Mixin HttpHelper: can_socket_connect? failed setting up socket connection: #{e}") - return false - end - - connected = false - - begin - t.connect_nonblock(saddr) - rescue Errno::EINPROGRESS - _r, w, _e = IO.select(nil, [t], nil, timeout) - if !w.nil? - connected = true - else - begin - t.connect_nonblock(saddr) - rescue Errno::EISCONN - t.close - connected = true - rescue SystemCallError - end - end - rescue SystemCallError - end - logger.trace("Mixin HttpHelper: can_socket_connect? == #{connected}") - connected - end - end - end -end +# frozen_string_literal: true +# +# Copyright:: Copyright (c) Chef Software Inc. +# License:: Apache License, Version 2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +require "socket" unless defined?(Socket) + +module Ohai + module Mixin + module HttpHelper + + # see if we can socket connect to an address/port + # + # @param addr [String] the address to connect to + # @param port [Integer] the port to connect to + # @param timeout [Integer] the seconds before timing out + # + # @return [Boolean] can we connect? + def can_socket_connect?(addr, port, timeout = 2) + t = Socket.new(Socket::Constants::AF_INET, Socket::Constants::SOCK_STREAM, 0) + begin + saddr = Socket.pack_sockaddr_in(port, addr) + rescue SocketError => e # generally means dns resolution error + logger.trace("Mixin HttpHelper: can_socket_connect? failed setting up socket connection: #{e}") + return false + end + + connected = false + + begin + t.connect_nonblock(saddr) + rescue Errno::EINPROGRESS + _r, w, _e = IO.select(nil, [t], nil, timeout) + if !w.nil? + connected = true + else + begin + t.connect_nonblock(saddr) + rescue Errno::EISCONN + t.close + connected = true + rescue SystemCallError + end + end + rescue SystemCallError + end + logger.trace("Mixin HttpHelper: can_socket_connect? == #{connected}") + connected + end + end + end +end