Skip to content

Commit 02334e0

Browse files
committed
Refine nonblock receive/write return types per review
Per review feedback: - `SSLSocket#syswrite_nonblock`: - Use `string` (= `String | _ToStr`) instead of `_ToS` for the argument: the C implementation uses `StringValue`, which converts via `to_str`, so `nil`, `Hash`, etc. are not accepted. - Remove `nil` from the `exception: false` return: unlike `sysread_nonblock`, write has no EOF-equivalent path that returns `nil`; it raises on real errors and only converts wait-state into `:wait_readable` / `:wait_writable`. - `BasicSocket#recv_nonblock`, `BasicSocket#recvmsg_nonblock`, `Socket#recvfrom_nonblock`, `UDPSocket#recvfrom_nonblock`: include `nil` in both `exception: true` and `exception: false` overloads. The rdoc states that these methods return `nil` when the underlying `recvfrom(2)` returns 0 (closed connection or empty datagram), regardless of `exception:`.
1 parent b89c921 commit 02334e0

4 files changed

Lines changed: 10 additions & 10 deletions

File tree

stdlib/openssl/0/openssl.rbs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9342,8 +9342,8 @@ module OpenSSL
93429342
# Writes *string* to the SSL connection in a non-blocking manner. Raises an
93439343
# SSLError if writing would block.
93449344
#
9345-
def syswrite_nonblock: (_ToS string, ?exception: true) -> Integer
9346-
| (_ToS string, exception: false) -> (Integer | :wait_readable | :wait_writable | nil)
9345+
def syswrite_nonblock: (string, ?exception: true) -> Integer
9346+
| (string, exception: false) -> (Integer | :wait_readable | :wait_writable)
93479347

93489348
# <!--
93499349
# rdoc-file=ext/openssl/lib/openssl/ssl.rb

stdlib/socket/0/basic_socket.rbs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -330,8 +330,8 @@ class BasicSocket < IO
330330
# ### See
331331
# * Socket#recvfrom
332332
#
333-
def recv_nonblock: (Integer maxlen, ?Integer flags, ?String buf, ?exception: true) -> String
334-
| (Integer maxlen, ?Integer flags, ?String buf, exception: false) -> (String | :wait_readable)
333+
def recv_nonblock: (Integer maxlen, ?Integer flags, ?String buf, ?exception: true) -> String?
334+
| (Integer maxlen, ?Integer flags, ?String buf, exception: false) -> (String | :wait_readable | nil)
335335

336336
# <!--
337337
# rdoc-file=ext/socket/lib/socket.rb
@@ -402,8 +402,8 @@ class BasicSocket < IO
402402
# recvmsg_nonblock should not raise an IO::WaitReadable exception, but return
403403
# the symbol <code>:wait_readable</code> instead.
404404
#
405-
def recvmsg_nonblock: (?Integer dlen, ?Integer flags, ?Integer clen, ?exception: true, ?scm_rights: boolish) -> [ String, Addrinfo, Integer?, Array[Socket::AncillaryData] ]
406-
| (?Integer dlen, ?Integer flags, ?Integer clen, exception: false, ?scm_rights: boolish) -> ([ String, Addrinfo, Integer?, Array[Socket::AncillaryData] ] | :wait_readable)
405+
def recvmsg_nonblock: (?Integer dlen, ?Integer flags, ?Integer clen, ?exception: true, ?scm_rights: boolish) -> [ String, Addrinfo, Integer?, Array[Socket::AncillaryData] ]?
406+
| (?Integer dlen, ?Integer flags, ?Integer clen, exception: false, ?scm_rights: boolish) -> ([ String, Addrinfo, Integer?, Array[Socket::AncillaryData] ] | :wait_readable | nil)
407407

408408
# <!--
409409
# rdoc-file=ext/socket/basicsocket.c

stdlib/socket/0/socket.rbs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1365,8 +1365,8 @@ class Socket < BasicSocket
13651365
# ### See
13661366
# * Socket#recvfrom
13671367
#
1368-
def recvfrom_nonblock: (Integer maxlen, ?Integer flags, ?untyped outbuf, ?exception: true) -> [ String, Addrinfo ]
1369-
| (Integer maxlen, ?Integer flags, ?untyped outbuf, exception: false) -> ([ String, Addrinfo ] | :wait_readable)
1368+
def recvfrom_nonblock: (Integer maxlen, ?Integer flags, ?untyped outbuf, ?exception: true) -> [ String, Addrinfo ]?
1369+
| (Integer maxlen, ?Integer flags, ?untyped outbuf, exception: false) -> ([ String, Addrinfo ] | :wait_readable | nil)
13701370

13711371
# <!--
13721372
# rdoc-file=ext/socket/socket.c

stdlib/socket/0/udp_socket.rbs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ class UDPSocket < IPSocket
8686
# ### See
8787
# * Socket#recvfrom
8888
#
89-
def recvfrom_nonblock: (Integer len, ?Integer flag, ?String outbuf, ?exception: true) -> [ String, [ String, Integer, String, String ] ]
90-
| (Integer len, ?Integer flag, ?String outbuf, exception: false) -> ([ String, [ String, Integer, String, String ] ] | :wait_readable)
89+
def recvfrom_nonblock: (Integer len, ?Integer flag, ?String outbuf, ?exception: true) -> [ String, [ String, Integer, String, String ] ]?
90+
| (Integer len, ?Integer flag, ?String outbuf, exception: false) -> ([ String, [ String, Integer, String, String ] ] | :wait_readable | nil)
9191

9292
# <!--
9393
# rdoc-file=ext/socket/udpsocket.c

0 commit comments

Comments
 (0)