File tree 1 file changed +34
-3
lines changed
1 file changed +34
-3
lines changed Original file line number Diff line number Diff line change @@ -41,13 +41,44 @@ def execute
41
41
socket &.close
42
42
end
43
43
44
- def tcp_socket
45
- socket = Socket . tcp ( @host , @port , connect_timeout : @timeout )
46
- socket . timeout = @timeout
44
+ def socket
45
+ addr_info = Socket . getaddrinfo ( @host , nil , nil , Socket ::SOCK_STREAM )
46
+ address_family = addr_info [ 0 ] [ 4 ]
47
+
48
+ socket = Socket . new ( address_family , Socket ::SOCK_STREAM , 0 )
49
+ sockaddr = Socket . sockaddr_in ( @port , addr_info [ 0 ] [ 3 ] )
50
+
51
+ begin
52
+ socket . connect_nonblock ( sockaddr )
53
+ rescue IO ::WaitWritable
54
+ if socket . wait_writable ( @timeout )
55
+ begin
56
+ socket . connect_nonblock ( sockaddr )
57
+ rescue Errno ::EISCONN
58
+ # connection established
59
+ rescue StandardError => e
60
+ socket . close
61
+ raise e
62
+ end
63
+ else
64
+ socket . close
65
+ raise Timeout ::Error , 'Execution expired'
66
+ end
67
+ end
47
68
48
69
socket
49
70
end
50
71
72
+ def tcp_socket
73
+ socket = socket ( )
74
+
75
+ tcp_socket = TCPSocket . for_fd ( socket . fileno )
76
+ tcp_socket . autoclose = true
77
+ tcp_socket . timeout = @timeout
78
+
79
+ tcp_socket
80
+ end
81
+
51
82
def tls_socket ( socket )
52
83
tls_socket = OpenSSL ::SSL ::SSLSocket . new ( socket , tls_ctx )
53
84
tls_socket . hostname = @host
You can’t perform that action at this time.
0 commit comments