Page MenuHomeFreeBSD

libfetch: Overhaul socket read / write
ClosedPublic

Authored by des on Jun 27 2026, 2:30 PM.
Tags
None
Referenced Files
F169633505: D57906.id181878.diff
Wed, Sep 2, 3:19 AM
F169626613: D57906.id181878.diff
Wed, Sep 2, 2:48 AM
F169588129: D57906.diff
Wed, Sep 2, 12:11 AM
F169574495: D57906.id180928.diff
Tue, Sep 1, 11:17 PM
F169559675: D57906.id180819.diff
Tue, Sep 1, 10:21 PM
F169539898: D57906.id180822.diff
Tue, Sep 1, 9:00 PM
F169520522: D57906.id180817.diff
Tue, Sep 1, 7:28 PM
F169468279: D57906.id.diff
Tue, Sep 1, 3:04 PM
Subscribers

Details

Summary
  • Make fetch_ssl_read() and fetch_ssl_write() behave more like read(2) and write(2), and drop fetch_socket_read() in favor of read(2).
  • Don't request POLLERR, it's implied.
  • Don't needlessly set errno, it's relatively costly.
  • Always check for EAGAIN from writev(2), otherwise we will abort on a short write instead of proceeding to poll(2).
  • Always check for EAGAIN from poll(2) even though it can't happen on FreeBSD; POSIX says it can, and it might in the future.
  • Rewrite fetch_read() and fetch_writev() to be more similar to each other. The main difference is that a partial read is treated as success while a partial write is treated as failure.

PR: 296316
MFC after: 1 week

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

des requested review of this revision.Jun 27 2026, 2:30 PM
des edited the summary of this revision. (Show Details)
This revision is now accepted and ready to land.Jul 8 2026, 10:49 AM
This revision was automatically updated to reflect the committed changes.