Issue #11139 has been updated by Akira Tanaka.


Akira Tanaka wrote:

> It is not clear that the behavior when sock_nonblock kwarg is not specified.
> I feel that it should be defined anyway.
> It may reduce the portability problem a bit.

"sock_nonblock: false" would be better for the default behavior.
It will reduce system calls: it avoids poll() for each blocking read operations and it adds only one fcntl(F_SETFL) for the first nonblocking operation.
It is consistent with accept4().


----------------------------------------
Feature #11139: [PATCH] socket: accept_nonblock supports "nonblock: false" kwarg
https://bugs.ruby-lang.org/issues/11139#change-52941

* Author: Eric Wong
* Status: Feedback
* Priority: Normal
* Assignee: Akira Tanaka
----------------------------------------
[PATCH 2/2] socket: accept_nonblock supports "nonblock: false" kwarg

An application wanting to do non-blocking accept may want to create a
blocking accepted socket, allow it with a kwarg while preserving default
behavior.

If this patch is accepted, I'd also like to support the opposite
for blocking accept calls:

	a = s.accept(nonblock: true) # blocking accept syscall
	a.nonblock? # => true
	s.nonblock? # => false

This requires the simple patch in [Feature #11138]

I'm unsure if ":nonblock" is a good keyword to use, since it is
somewhat confusing


---Files--------------------------------
0002-socket-accept_nonblock-supports-nonblock-false-kwarg.patch (2.94 KB)


-- 
https://bugs.ruby-lang.org/