[#69892] [Ruby trunk - Feature #11339] [Open] [PATCH] io.c: avoid kwarg parsing in C API — normalperson@...
Issue #11339 has been reported by Eric Wong.
8 messages
2015/07/07
[#69983] Re: [Ruby trunk - Feature #11339] [Open] [PATCH] io.c: avoid kwarg parsing in C API
— Eric Wong <normalperson@...>
2015/07/15
normalperson@yhbt.net wrote:
[#69990] Re: [Ruby trunk - Feature #11339] [Open] [PATCH] io.c: avoid kwarg parsing in C API
— SASADA Koichi <ko1@...>
2015/07/16
On 2015/07/16 4:41, Eric Wong wrote:
[#69995] Re: [Ruby trunk - Feature #11339] [Open] [PATCH] io.c: avoid kwarg parsing in C API
— Eric Wong <normalperson@...>
2015/07/16
SASADA Koichi <ko1@atdot.net> wrote:
[#69984] $SAFE inside an Array — Bertram Scharpf <lists@...>
Hi,
4 messages
2015/07/15
[#70001] [Ruby trunk - Bug #11336] [Open] TestProcess#test_exec_fd_3_redirect failed on Solaris 10 — ngotogenome@...
Issue #11336 has been updated by Naohisa Goto.
4 messages
2015/07/16
[#70005] Re: [Ruby trunk - Bug #11336] [Open] TestProcess#test_exec_fd_3_redirect failed on Solaris 10
— Eric Wong <normalperson@...>
2015/07/16
Sorry, but I think rb_divert_reserved_fd seems a racy fix. I think the
[#70011] [Ruby trunk - Bug #11362] [Open] [PATCH] ensure Process.kill(:STOP, $$) is resumable — normalperson@...
Issue #11362 has been reported by Eric Wong.
3 messages
2015/07/17
[#70016] [Ruby trunk - Bug #11364] [Open] Use smaller buffer for sendmsg — merch-redmine@...
Issue #11364 has been reported by Jeremy Evans.
8 messages
2015/07/17
[#70052] Re: [Ruby trunk - Bug #11364] [Open] Use smaller buffer for sendmsg
— Eric Wong <normalperson@...>
2015/07/20
merch-redmine@jeremyevans.net wrote:
[#70055] Re: [Ruby trunk - Bug #11364] [Open] Use smaller buffer for sendmsg
— Jeremy Evans <code@...>
2015/07/20
On 07/20 10:46, Eric Wong wrote:
[#70056] Re: [Ruby trunk - Bug #11364] [Open] Use smaller buffer for sendmsg
— Eric Wong <normalperson@...>
2015/07/21
Jeremy Evans <code@jeremyevans.net> wrote:
[#70103] [Ruby trunk - Feature #11375] Decreased Object Allocation in Pathname.rb — richard.schneeman@...
Issue #11375 has been updated by Richard Schneeman.
3 messages
2015/07/23
[#70156] [Ruby trunk - Bug #11396] Bad performance in ruby >= 2.2 for Hash with many symbol keys — dunric29a@...
Issue #11396 has been updated by David Unric.
3 messages
2015/07/28
[ruby-core:70055] Re: [Ruby trunk - Bug #11364] [Open] Use smaller buffer for sendmsg
From:
Jeremy Evans <code@...>
Date:
2015-07-20 23:26:02 UTC
List:
ruby-core #70055
On 07/20 10:46, Eric Wong wrote:
> merch-redmine@jeremyevans.net wrote:
> > Bug #11364: Use smaller buffer for sendmsg
> > https://bugs.ruby-lang.org/issues/11364
> >
> > OpenBSD's limit is less than 128.
>
> Btw, this is pretty disappointing since I want to use SOCK_SEQPACKET
> more for IPC in some projects.
>
> Does SO_RCVBUF/SO_SNDBUF help in OpenBSD with SOCK_SEQPACKET sockets?
Looks like my initial analysis was partially wrong. OpenBSD's default
buffer for SEQPACKET sockets is 4096. However, ancdata.c needs a patch
to handle EMSGSIZE.
Here's a diff that should fix things. Hopefully it works on other
operating systems as well, but if not, I can wrap things in an ifdef.
Thanks,
Jeremy
From ea53434c4fda387347228e29856537d24f4dc649 Mon Sep 17 00:00:00 2001
From: Jeremy Evans <code@jeremyevans.net>
Date: Mon, 20 Jul 2015 17:20:58 -0600
Subject: [PATCH] Treat EMSGSIZE similar to EWOULDBLOCK for sendmsg_nonblock
OpenBSD uses EMSGSIZE if you try to send data on a nonblocking
socket that would cause it to block.
Restore previous limits in tests.
---
ext/socket/ancdata.c | 2 +-
test/socket/test_nonblock.rb | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/ext/socket/ancdata.c b/ext/socket/ancdata.c
index da8b816..3440dd4 100644
--- ext/socket/ancdata.c
+++ ext/socket/ancdata.c
@@ -1284,7 +1284,7 @@ bsock_sendmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock)
rb_io_check_closed(fptr);
goto retry;
}
- if (nonblock && (errno == EWOULDBLOCK || errno == EAGAIN)) {
+ if (nonblock && (errno == EWOULDBLOCK || errno == EMSGSIZE || errno == EAGAIN)) {
if (rsock_opt_false_p(opts, sym_exception)) {
return sym_wait_writable;
}
diff --git a/test/socket/test_nonblock.rb b/test/socket/test_nonblock.rb
index 39999ca..4edcbc0 100644
--- test/socket/test_nonblock.rb
+++ test/socket/test_nonblock.rb
@@ -299,7 +299,7 @@ class TestSocketNonblock < Test::Unit::TestCase
if defined?(UNIXSocket) && defined?(Socket::SOCK_SEQPACKET)
def test_sendmsg_nonblock_seqpacket
- buf = '*' * 63
+ buf = '*' * 4096
UNIXSocket.pair(:SEQPACKET) do |s1, s2|
assert_raise(IO::WaitWritable) do
loop { s1.sendmsg_nonblock(buf) }
@@ -310,7 +310,7 @@ class TestSocketNonblock < Test::Unit::TestCase
end
def test_sendmsg_nonblock_no_exception
- buf = '*' * 63
+ buf = '*' * 128
UNIXSocket.pair(:SEQPACKET) do |s1, s2|
n = 0
Timeout.timeout(60) do
--
2.4.5