summaryrefslogtreecommitdiff
path: root/net-mgmt/rubygem-riemann-client/files/patch-lib_riemann_client_tcp__socket.rb
blob: 527292f86545cb29aab33a461752431a1e538ea7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
--- lib/riemann/client/tcp_socket.rb.orig	2019-11-25 11:01:31 UTC
+++ lib/riemann/client/tcp_socket.rb
@@ -107,13 +107,14 @@ module Riemann
       # Using the options from the initializer, a new ::Socket is created that
       # is:
       #
-      #   TCP, IPv4 only, autoclosing on exit, nagle's algorithm is disabled and has
+      #   TCP, autoclosing on exit, nagle's algorithm is disabled and has
       #   TCP Keepalive options set if keepalive is supported.
       #
-      # Returns a new ::Socket instance
-      def blank_socket
-        sock = ::Socket.new(::Socket::AF_INET, ::Socket::SOCK_STREAM, 0)
+      # Returns a new ::Socket instance for
 
+      def socket_factory(type)
+         sock = ::Socket.new(type, ::Socket::SOCK_STREAM, 0)
+
         # close file descriptors if we exec
         if Fcntl.constants.include?(:F_SETFD) && Fcntl.constants.include?(:FD_CLOEXEC)
           sock.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC)
@@ -167,13 +168,14 @@ module Riemann
         # Calculate our timeout deadline
         deadline = Time.now.to_f + connect_timeout
 
-        # Lookup destination address, we only want    IPv4             , TCP
-        addrs      = ::Socket.getaddrinfo(host, port, ::Socket::AF_INET, ::Socket::SOCK_STREAM )
+        # Lookup destination address, we only want TCP.
+        addrs      = ::Socket.getaddrinfo(host, port, nil, ::Socket::SOCK_STREAM )
         errors     = []
         conn_error = lambda { raise errors.first }
         sock       = nil
 
-        addrs.find( conn_error ) do |addr|
+        # Sort it so we get AF_INET, IPv4
+        addrs.sort.find( conn_error ) do |addr|
           sock = connect_or_error( addr, deadline, errors )
         end
         return sock
@@ -210,7 +212,7 @@ module Riemann
       # connection was possible.
       def connect_nonblock( addr, timeout )
         sockaddr = ::Socket.pack_sockaddr_in(addr[1], addr[3])
-        sock     = blank_socket()
+        sock     = self.socket_factory( addr[4] )
         sock.connect_nonblock( sockaddr )
         return sock
       rescue Errno::EINPROGRESS