Skip to content

Commit 3184d5d

Browse files
committed
[GR-14806] Update specs
PullRequest: truffleruby/2905
2 parents 84b0342 + 0406f54 commit 3184d5d

33 files changed

+286
-185
lines changed

.github/workflows/ci.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,4 @@ jobs:
202202
bundler: none
203203
- name: Setup jt
204204
run: echo "$PWD/bin" >> $GITHUB_PATH
205-
- name: Install webrick for Ruby 3+
206-
run: gem install webrick
207-
if: startsWith(matrix.ruby, '3.')
208205
- run: CHECK_LEAKS=true jt -u ruby mspec -fdot --timeout 30 spec/ruby

lib/cext/ABI_version.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
10
1+
11

lib/truffle/rbconfig.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ module RbConfig
162162
'LIBEXT' => 'a',
163163
'LIBPATHENV' => 'LD_LIBRARY_PATH',
164164
'LIBPATHFLAG' => ' -L%1$-s',
165-
'LIBRUBY' => '',
165+
'LIBRUBY' => "cext/libtruffleruby.#{Truffle::Platform::SOEXT}",
166166
'LIBRUBY_A' => '',
167167
'LIBRUBYARG' => librubyarg,
168168
'LIBRUBYARG_SHARED' => librubyarg,

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: 5 additions & 4 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
@@ -406,11 +406,12 @@ def listen(backlog)
406406
end
407407

408408
def accept
409-
Truffle::Socket.accept(self, Socket)
409+
Truffle::Socket.accept_and_addrinfo(self, Socket, true)
410410
end
411411

412412
private def __accept_nonblock(exception)
413-
Truffle::Socket.accept_nonblock(self, Socket, exception)
413+
self.nonblock = true
414+
Truffle::Socket.accept_and_addrinfo(self, Socket, exception)
414415
end
415416

416417
def sysaccept

lib/truffle/socket/tcp_server.rb

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,12 @@ def listen(backlog)
6363
end
6464

6565
def accept
66-
socket, _ = Truffle::Socket.accept(self, TCPSocket)
67-
68-
socket
66+
Truffle::Socket.accept(self, TCPSocket, true)
6967
end
7068

7169
private def __accept_nonblock(exception)
72-
socket, _ = Truffle::Socket.accept_nonblock(self, TCPSocket, exception)
73-
74-
socket
70+
self.nonblock = true
71+
Truffle::Socket.accept(self, TCPSocket, exception)
7572
end
7673

7774
def sysaccept

lib/truffle/socket/truffle.rb

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ def self.sockaddr_class_for_socket(socket)
9393
end
9494
end
9595

96-
def self.internal_accept(source, new_class, exception)
96+
def self.accept_and_addrinfo(source, new_class, exception)
9797
raise IOError, 'socket has been closed' if source.closed?
9898

9999
sockaddr = sockaddr_class_for_socket(source).new
@@ -123,16 +123,20 @@ def self.internal_accept(source, new_class, exception)
123123
sockaddr.pointer.free
124124
end
125125
end
126-
private_class_method :internal_accept
127126

128-
def self.accept(source, new_class)
129-
internal_accept(source, new_class, true)
130-
end
127+
def self.accept(source, new_class, exception)
128+
raise IOError, 'socket has been closed' if source.closed?
131129

132-
def self.accept_nonblock(source, new_class, exception)
133-
source.nonblock = true
130+
fd = Truffle::Socket::Foreign.accept(source.fileno, ::FFI::Pointer::NULL, ::FFI::Pointer::NULL)
131+
if fd < 0
132+
if !exception and Errno.errno == Truffle::POSIX::EAGAIN_ERRNO
133+
return :wait_readable
134+
else
135+
Error.read_error('accept(2)', source)
136+
end
137+
end
134138

135-
internal_accept(source, new_class, exception)
139+
new_class.for_fd(fd)
136140
end
137141

138142
def self.listen(source, backlog)
@@ -351,7 +355,7 @@ def self.convert_reverse_lookup(socket = nil, reverse_lookup = nil)
351355
end
352356

353357
def self.address_info(method, socket, reverse_lookup = nil)
354-
sockaddr = Foreign.__send__(method, socket.fileno)
358+
sockaddr = Foreign.__send__(method, socket)
355359

356360
reverse_lookup = convert_reverse_lookup(socket, reverse_lookup)
357361

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_server.rb

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,12 @@ def listen(backlog)
5151
end
5252

5353
def accept
54-
socket, _ = Truffle::Socket.accept(self, UNIXSocket)
55-
56-
socket
54+
Truffle::Socket.accept(self, UNIXSocket, true)
5755
end
5856

5957
private def __accept_nonblock(exception)
60-
socket, _ = Truffle::Socket.accept_nonblock(self, UNIXSocket, exception)
61-
62-
socket
58+
self.nonblock = true
59+
Truffle::Socket.accept(self, UNIXSocket, exception)
6360
end
6461

6562
def sysaccept

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)