Skip to content

Improve socket:send/2,3 error handling for transient send backpressure#2345

Draft
harmon25 wants to merge 1 commit into
atomvm:release-0.7from
harmon25:eagain_tcp
Draft

Improve socket:send/2,3 error handling for transient send backpressure#2345
harmon25 wants to merge 1 commit into
atomvm:release-0.7from
harmon25:eagain_tcp

Conversation

@harmon25

Copy link
Copy Markdown

This pull request improves the accuracy of error reporting in the socket send implementation, making it easier for callers to distinguish between transient backpressure and actual connection closure. The most important changes are:

Socket send error handling improvements:

  • src/libAtomVM/otp_socket.c: Now returns {error, eagain} when a send operation encounters transient backpressure (such as lwIP ERR_MEM or BSD EAGAIN/EWOULDBLOCK), allowing callers to retry instead of misinterpreting it as a closed connection.
  • src/libAtomVM/otp_socket.c: When the peer has closed the connection, returns {error, closed} instead of {ok, Data} to clarify the connection state.

Documentation update:

  • CHANGELOG.md: Updated to reflect that socket:send/2,3 now correctly differentiates between transient backpressure and closed connections in its error reporting.

These changes are made under both the "Apache 2.0" and the "GNU Lesser General
Public License 2.1 or later" license terms (dual license).

SPDX-License-Identifier: Apache-2.0 OR LGPL-2.1-or-later

Signed-off-by: harmon25 <dougwright1@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant