Skip to content

Commit 596c3e1

Browse files
committed
Pass a Socket to getsockname/getpeername and not just a fd
* So we can check if the socket is closed there.
1 parent db56270 commit 596c3e1

File tree

5 files changed

+13
-14
lines changed

5 files changed

+13
-14
lines changed

lib/truffle/socket/basic_socket.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def do_not_reverse_lookup
5757
end
5858

5959
def getsockopt(level, optname)
60-
sockname = Truffle::Socket::Foreign.getsockname(Primitive.io_fd(self))
60+
sockname = Truffle::Socket::Foreign.getsockname(self)
6161
family = Truffle::Socket.family_for_sockaddr_in(sockname)
6262
level = Truffle::Socket::SocketOptions.socket_level(level, family)
6363
optname = Truffle::Socket::SocketOptions.socket_option(level, optname)
@@ -78,7 +78,7 @@ def setsockopt(*args)
7878
Truffle::Type.check_arity(args.size, 3, 3)
7979
end
8080

81-
sockname = Truffle::Socket::Foreign.getsockname(Primitive.io_fd(self))
81+
sockname = Truffle::Socket::Foreign.getsockname(self)
8282
family = Truffle::Socket.family_for_sockaddr_in(sockname)
8383
level = Truffle::Socket::SocketOptions.socket_level(level, family)
8484
optname = Truffle::Socket::SocketOptions.socket_option(level, optname)
@@ -113,11 +113,11 @@ def setsockopt(*args)
113113
end
114114

115115
def getsockname
116-
Truffle::Socket::Foreign.getsockname(Primitive.io_fd(self))
116+
Truffle::Socket::Foreign.getsockname(self)
117117
end
118118

119119
def getpeername
120-
Truffle::Socket::Foreign.getpeername(Primitive.io_fd(self))
120+
Truffle::Socket::Foreign.getpeername(self)
121121
end
122122

123123
def send(message, flags, dest_sockaddr = nil)

lib/truffle/socket/socket.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -373,13 +373,13 @@ def connect(sockaddr)
373373
end
374374

375375
def local_address
376-
sockaddr = Truffle::Socket::Foreign.getsockname(Primitive.io_fd(self))
376+
sockaddr = Truffle::Socket::Foreign.getsockname(self)
377377

378378
Addrinfo.new(sockaddr, @family, @socket_type, 0)
379379
end
380380

381381
def remote_address
382-
sockaddr = Truffle::Socket::Foreign.getpeername(Primitive.io_fd(self))
382+
sockaddr = Truffle::Socket::Foreign.getpeername(self)
383383

384384
Addrinfo.new(sockaddr, @family, @socket_type, 0)
385385
end

lib/truffle/socket/truffle.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ def self.convert_reverse_lookup(socket = nil, reverse_lookup = nil)
340340
end
341341

342342
def self.address_info(method, socket, reverse_lookup = nil)
343-
sockaddr = Foreign.__send__(method, socket.fileno)
343+
sockaddr = Foreign.__send__(method, socket)
344344

345345
reverse_lookup = convert_reverse_lookup(socket, reverse_lookup)
346346

lib/truffle/socket/truffle/foreign.rb

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -229,12 +229,11 @@ def self.getnameinfo(sockaddr, flags = ::Socket::NI_NUMERICHOST | ::Socket::NI_N
229229
end
230230
end
231231

232-
def self.getpeername(descriptor)
232+
def self.getpeername(socket)
233233
buffer, sockaddr_storage_p, len_p = Truffle::FFI::Pool.stack_alloc(128, Primitive.pointer_find_type_size(:socklen_t))
234234
begin
235235
len_p.write_int(128)
236-
237-
err = _getpeername(descriptor, sockaddr_storage_p, len_p)
236+
err = _getpeername(socket.fileno, sockaddr_storage_p, len_p)
238237

239238
Errno.handle('getpeername(2)') unless err == 0
240239

@@ -244,11 +243,11 @@ def self.getpeername(descriptor)
244243
end
245244
end
246245

247-
def self.getsockname(descriptor)
246+
def self.getsockname(socket)
248247
buffer, sockaddr_storage_p, len_p = Truffle::FFI::Pool.stack_alloc(128, Primitive.pointer_find_type_size(:socklen_t))
249248
begin
250249
len_p.write_int(128)
251-
err = _getsockname(descriptor, sockaddr_storage_p, len_p)
250+
err = _getsockname(socket.fileno, sockaddr_storage_p, len_p)
252251

253252
Errno.handle('getsockname(2)') unless err == 0
254253

lib/truffle/socket/unix_socket.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,15 @@ def recvfrom(bytes_read, flags = 0)
6666
end
6767

6868
def path
69-
@path ||= Truffle::Socket::Foreign.getsockname(Primitive.io_fd(self)).unpack('SZ*')[1]
69+
@path ||= Truffle::Socket::Foreign.getsockname(self).unpack('SZ*')[1]
7070
end
7171

7272
def addr
7373
['AF_UNIX', path]
7474
end
7575

7676
def peeraddr
77-
path = Truffle::Socket::Foreign.getpeername(Primitive.io_fd(self)).unpack('SZ*')[1]
77+
path = Truffle::Socket::Foreign.getpeername(self).unpack('SZ*')[1]
7878

7979
['AF_UNIX', path]
8080
end

0 commit comments

Comments
 (0)