Page MenuHomeFreeBSD

libfetch: Overhaul socket read / write
Needs ReviewPublic

Authored by des on Sat, Jun 27, 2:30 PM.
Tags
None
Referenced Files
F161561335: D57906.diff
Sat, Jul 4, 9:26 PM
F161557841: D57906.diff
Sat, Jul 4, 8:46 PM
F161557810: D57906.id180822.diff
Sat, Jul 4, 8:46 PM
F161554709: D57906.id.diff
Sat, Jul 4, 8:06 PM
Unknown Object (File)
Fri, Jul 3, 6:51 AM
Unknown Object (File)
Thu, Jul 2, 10:33 AM
Unknown Object (File)
Thu, Jul 2, 2:19 AM
Unknown Object (File)
Thu, Jul 2, 2:19 AM
Subscribers

Details

Reviewers
bapt
decke
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 Skipped
Unit
Tests Skipped
Build Status
Buildable 74329
Build 71212: arc lint + arc unit