[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] drop MSG_EOR for AF_UNIX + SOCK_SEQPACKET
From: |
Eric Wong |
Subject: |
[PATCH] drop MSG_EOR for AF_UNIX + SOCK_SEQPACKET |
Date: |
Mon, 4 Sep 2023 06:22:19 +0000 |
Using MSG_EOR with these local sockets is not necessary, and
appears to trigger a truncation bug on OpenBSD 7.3.
Link: https://marc.info/?i=20230826020759.M335788@dcvr
---
lib/dtas/player/client_handler.rb | 2 +-
lib/dtas/unix_accepted.rb | 4 ++--
lib/dtas/unix_client.rb | 2 +-
test/test_unixserver.rb | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/lib/dtas/player/client_handler.rb
b/lib/dtas/player/client_handler.rb
index 2914fe7..3c5fe5d 100644
--- a/lib/dtas/player/client_handler.rb
+++ b/lib/dtas/player/client_handler.rb
@@ -564,7 +564,7 @@ def state_file_dump_async(io, sf)
rescue => e
res = "ERR dumping to #{xs(sf.path)} #{e.message}"
end
- io.to_io.send(res, Socket::MSG_EOR)
+ io.to_io.send(res, 0)
ensure
exit!(0)
end
diff --git a/lib/dtas/unix_accepted.rb b/lib/dtas/unix_accepted.rb
index a84eade..63d3ce0 100644
--- a/lib/dtas/unix_accepted.rb
+++ b/lib/dtas/unix_accepted.rb
@@ -17,7 +17,7 @@ def initialize(sock)
# returns :wait_readable on success
def emit(msg)
if @sbuf.empty?
- case rv = @to_io.sendmsg_nonblock(msg, Socket::MSG_EOR, exception: false)
+ case rv = @to_io.sendmsg_nonblock(msg, 0, exception: false)
when :wait_writable
@sbuf << msg
rv
@@ -34,7 +34,7 @@ def emit(msg)
# flushes pending data if it got buffered
def writable_iter
- case @to_io.sendmsg_nonblock(@sbuf[0], Socket::MSG_EOR, exception: false)
+ case @to_io.sendmsg_nonblock(@sbuf[0], 0, exception: false)
when :wait_writable then return :wait_writable
else
@sbuf.shift
diff --git a/lib/dtas/unix_client.rb b/lib/dtas/unix_client.rb
index 71f833c..8c73b7d 100644
--- a/lib/dtas/unix_client.rb
+++ b/lib/dtas/unix_client.rb
@@ -24,7 +24,7 @@ def initialize(path = self.class.default_path)
def req_start(args)
args = xs(args) if Array === args
- @to_io.send(args, Socket::MSG_EOR)
+ @to_io.send(args, 0)
end
def req_ok(args, timeout = nil)
diff --git a/test/test_unixserver.rb b/test/test_unixserver.rb
index 7e99b9e..c91354d 100644
--- a/test/test_unixserver.rb
+++ b/test/test_unixserver.rb
@@ -41,7 +41,7 @@ def test_server_loop
@srv.run_once # nothing
msgs = []
clients = []
- client.send("HELLO", Socket::MSG_EOR)
+ client.send("HELLO", 0)
@srv.run_once do |c, msg|
clients << c
msgs << msg
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] drop MSG_EOR for AF_UNIX + SOCK_SEQPACKET,
Eric Wong <=