File 0963-kernel-esock-Handle-select_sent.patch of Package erlang
From b440138fb19e85196a52d796776503bd00ce28be Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Thu, 5 Jun 2025 06:55:48 +0200
Subject: [PATCH 1/2] [kernel|esock] Handle 'select_sent'
The socket nif can actually return the atom 'select_sent'
when calling accept (prim_socket:accept). This is a race,
which is difficult to reproduce. But, this should be
translated into an {error, {invalid, select_sent}}.
This happens when there is already an ongoing accept,
which has just resulted in a select message having been sent
(select_sent).
OTP-19684
---
lib/kernel/src/socket.erl | 2 ++
1 file changed, 2 insertions(+)
diff --git a/lib/kernel/src/socket.erl b/lib/kernel/src/socket.erl
index 0c8efa7f2c..9bf35d6e21 100644
--- a/lib/kernel/src/socket.erl
+++ b/lib/kernel/src/socket.erl
@@ -3338,6 +3338,8 @@ accept_deadline(LSockRef, Deadline) ->
accept_result(LSockRef, AccRef, Result) ->
case Result of
+ select_sent ->
+ {error, {invalid, Result}};
{ok, SockRef} ->
Socket = ?socket(SockRef),
{ok, Socket};
--
2.43.0