Commit Graph

385 Commits

Author SHA1 Message Date
Patricio Whittingslow c32fc23486 add fuzz tests 2026-07-28 21:43:21 -03:00
Patricio Whittingslow 904294f653 fix tests 2026-07-28 21:11:52 -03:00
Patricio Whittingslow e8f4d3b7a3 update documentation on ContentLength methods and fix bug in Form reset on empty body 2026-07-28 20:45:35 -03:00
Patricio Whittingslow de766c8a24 apply @MDr164 various fixes 2026-07-28 20:29:06 -03:00
Patricio Whittingslow 743e09a4c1 fix rawsock tinygo implementation 2026-07-28 15:41:34 -03:00
Patricio Whittingslow 85f517e337 add README.md 2026-07-28 14:39:08 -03:00
Patricio Whittingslow b763e321b1 add examples 2026-07-28 14:32:51 -03:00
Patricio Whittingslow d0172e42a1 apply go fix 2026-07-28 11:25:43 -03:00
Patricio Whittingslow 5bc1a20454 @MDr164 suggestions get potential fixes 2026-07-28 11:25:14 -03:00
Patricio Whittingslow 98f104f67c remove backoff from form parsing 2026-07-27 18:10:22 -03:00
Patricio Whittingslow 659e7c7ba9 expose rawsock as experimental package (will use for external benchmarks) 2026-07-27 17:45:43 -03:00
Patricio Whittingslow ccb2762fc2 run go fix 2026-07-27 12:28:52 -03:00
Patricio Whittingslow a97959739e fix examples 2026-07-27 12:24:57 -03:00
Patricio Whittingslow 0d1f50fc48 fix tests after excplicit header alloc change 2026-07-27 12:22:20 -03:00
Patricio Whittingslow 0e2f487e9f explicit header key/value alloc and add ExchangeConfig 2026-07-27 11:51:02 -03:00
Patricio Whittingslow 75d2c0c46d add a pattern argument to Mux 2026-07-26 22:55:50 -03:00
Patricio Whittingslow e46e45238d apply go fix 2026-07-26 22:12:57 -03:00
Patricio Whittingslow 33ed289d30 simplify clanker slop 2026-07-26 22:08:57 -03:00
Patricio Whittingslow ebfd80c80c ai insists with backoffs 2026-07-26 21:29:02 -03:00
Patricio Whittingslow 0b6a71efa8 add Exchange.ReadMultiparts reimagining of clanker slop 2026-07-26 20:19:46 -03:00
Patricio Whittingslow 0c1a51150d begin adding readMultiPart 2026-07-26 18:04:34 -03:00
Patricio Whittingslow 4f1a178f29 first Multipart approach 2026-07-26 17:22:09 -03:00
Patricio Whittingslow dd7c4bb037 remove status type 2026-07-26 13:57:18 -03:00
Patricio Whittingslow cc7ecc0c19 finish rounding up multipart form parsing 2026-07-26 13:57:18 -03:00
Patricio Whittingslow 4976cdf38e begin adding multipart form logic 2026-07-26 13:57:18 -03:00
Patricio Whittingslow 92cf46e570 add streaming API distinct from Exchange 2026-07-26 13:57:18 -03:00
Patricio Whittingslow 6d88506541 add raw buffer access 2026-07-26 13:57:18 -03:00
Patricio Whittingslow 229acd3e68 fail on incomplete staging 2026-07-26 13:57:18 -03:00
Patricio Whittingslow 69640a6235 minor doc nit 2026-07-26 13:57:18 -03:00
Patricio Whittingslow b79e58b812 add MethodFrom 2026-07-26 13:57:18 -03:00
Patricio Whittingslow 10932ebf34 rework Mux interface to receive a string request path 2026-07-26 13:57:18 -03:00
Patricio Whittingslow c19fd2093c run go fix 2026-07-26 13:57:18 -03:00
Patricio Whittingslow 5937070cc5 Router.Handle returns error after being torn down 2026-07-26 13:57:18 -03:00
Patricio Whittingslow dab5095a49 massive documentation push and code reordering in files 2026-07-26 13:57:18 -03:00
Patricio Whittingslow 9faa0c2722 remove ForEach pattern, allocates in TinyGo 2026-07-26 13:57:18 -03:00
Patricio Whittingslow d83da243a0 add query handling 2026-07-26 13:57:18 -03:00
Patricio Whittingslow 99f848f93f add benchmarks 2026-07-26 13:57:18 -03:00
Patricio Whittingslow 6e332e7833 small nit 2026-07-26 13:57:18 -03:00
Patricio Whittingslow a7f598f975 several bugfixes, add internal.IntLen, round up http-linux example with new router API 2026-07-26 13:57:18 -03:00
Patricio Whittingslow d4666630f7 improve locking and acquisition of Exchanges in reconfiguring 2026-07-26 13:57:18 -03:00
Patricio Whittingslow 962f6864be add Hijacker-like functionality 2026-07-26 13:57:18 -03:00
Patricio Whittingslow 5b83b18da0 more tests, run go generate 2026-07-26 13:57:18 -03:00
Patricio Whittingslow e0dd19416c add low level Handle function and more tests 2026-07-26 13:57:18 -03:00
Patricio Whittingslow 9397caf144 claude found neat bugs 2026-07-26 13:57:18 -03:00
Patricio Whittingslow 0fd0ad8cbf begin adding httphi tests 2026-07-26 13:57:18 -03:00
Patricio Whittingslow 6e7cd94040 add http/httphi 2026-07-26 13:57:18 -03:00
Pat Whittingslow a3f2742abf DHCPv4+Debug (#170)
* DHCPv4+Debug: add RawData method and improve Logging semantics with configured logger instead of default

* add xnet.LogAllocs
2026-07-26 13:55:48 -03:00
Marvin 马维 Drees 8873b55e5d feat(tcp): add RFC 6298 RTO as a LossRecovery implementation (#169)
Provide a concrete packet-loss recovery algorithm for the LossRecovery
interface added in #168: the RFC 6298 round-trip-time estimator and single
retransmission timer.

RTO is a pure, reactive state machine. It derives RTT estimates and
retransmission decisions solely from the segments observed through the
LossRecovery hooks and the monotonic time handed in at each boundary, so it
holds no clock and allocates nothing (issue #140). It tracks a shadow of the
send sequence space (snd.UNA/snd.NXT) purely from observed segments, which is
how it manages the timer without reaching into the ControlBlock and how it
distinguishes retransmissions for Karn's algorithm.

Covered:
  - §2.2/§2.3 SRTT/RTTVAR/RTO smoothing (integer-shift form)
  - §3 Karn's algorithm: one sample in flight, never sample a retransmit
  - §5.1-§5.3 timer arm/restart/stop as data is sent and acknowledged
  - §5.4-§5.6 timeout response: exponential backoff + go-back-N retransmit
  - §5.7 backoff collapse on a valid RTT sample
  - RTO clamped to [rtoMin, rtoMax]

RTT introspection (SmoothedRTT, CurrentRTO, Running) lives on the concrete type,
not the interface, per the LossRecovery design. Install with new(RTO) on
ConnConfig.LossRecovery; the connection calls Reset on open so the zero value is
ready to use.

Generated with LLM assistance.

Signed-off-by: Marvin Drees <marvin.drees@9elements.com>
2026-07-22 13:44:31 -03:00
Pat Whittingslow 41c7e3c445 add loss.go (#168) 2026-07-22 13:09:12 -03:00
Pat Whittingslow 1bbfd5eac3 @MDr164 trick to ignore no-extension files (#162)
* @MDr164 trick to ignore no-extension files

* catch changes to LICENSE
2026-07-21 16:14:53 -03:00