Skip to content

Conversation

@esemeniuc
Copy link
Collaborator

@esemeniuc esemeniuc commented Feb 8, 2026

  • proxy/src/main.rs: make get_public_ip() trim/validate the ifconfig.me response and return a structured error instead of unwrap() panicking on parse failure.
  • proxy/src/forwarder.rs, proxy/src/main.rs: return the actual UDP bound port from start_forwarder_threads() and use it for startup logging and heartbeat registration (so the advertised port matches what was actually bound).
  • proxy/src/server.rs: keep gRPC clients connected if they fall behind by handling broadcast::RecvError::Lagged (skip missed entries and continue streaming) instead of terminating the stream.
  • proxy/src/forwarder.rs: fix dedup so duplicates are actually dropped (mark Packet.meta.discard and filter discarded packets out of forwarding, TraceShred latency logging, and reconstruction enqueue).
  • proxy/src/forwarder.rs: dedup using only the expected shred payload bytes (dedup_key_slice), ignoring any trailing packet bytes so the same shred can’t bypass dedup via padding/garbage.
  • proxy/src/forwarder.rs: avoid cloning PacketBatch for reconstruction; enqueue the already-processed batch at the end of the forward path.
  • proxy/src/forwarder.rs: add a bounded reconstruction queue with explicit drop accounting when full, plus queue visibility metrics (len/hi-watermark, queue delay avg/max, batch processing avg/max).
  • proxy/src/forwarder.rs: fix forward/fail/duplicate metric accounting (don’t scale duplicate counts by destination sends; count partial batch_send failures correctly).
  • proxy/src/deshred.rs: rework reconstruction state to use BitVec for seen/data-complete/recovered/deshredded tracking and reduce per-slot memory/iteration overhead.
  • proxy/src/deshred.rs: key FEC recovery state by (fec_set_index, version, leader signature) and store coding shreds by position to avoid mixing conflicting erasure batches and to reduce repeated recovery work.
  • proxy/src/deshred.rs: add slot-window filtering around a per-batch median “slot anchor” (mitigates outlier slot poisoning), plus eviction of out-of-window slots when state grows too large (with missed-FEC-set logging).
  • proxy/src/deshred.rs: improve unknown-start handling (emit best-effort decodes once per boundary, sanity-check them, and don’t commit/drop payloads until a known boundary arrives)
  • proxy/src/deshred.rs: cap bincode decode size and use allow_trailing_bytes so padding/back-compat cases don’t break decoding while avoiding pathological payloads.
  • proxy/src/forwarder.rs, proxy/src/deshred.rs: expand tests for trailing-bytes behavior, bytes-only mode, unknown-start semantics, slot poisoning, and make UDP tests sandbox-friendly (ephemeral binds / skip on PermissionDenied).

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