From 5839a311299c9dd628bcb1b97c5458a325c548d5 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 4 Sep 2023 06:22:19 +0000 Subject: drop MSG_EOR for AF_UNIX + SOCK_SEQPACKET 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 @@ module DTAS::Player::ClientHandler # :nodoc: 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 @@ class DTAS::UNIXAccepted # :nodoc: # 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 @@ class DTAS::UNIXAccepted # :nodoc: # 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 @@ class DTAS::UNIXClient # :nodoc: 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 @@ class TestUNIXServer < Testcase @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 -- cgit v1.2.3-24-ge0c7