-
Notifications
You must be signed in to change notification settings - Fork 38
Description
Summary: The C server (slipstream/src/slipstream_sockloop.c) emits an NXDOMAIN response when picoquic_prepare_packet_ex returns send_length == 0 for a poll. That silently converts a valid poll into a negative DNS response, and the client still clears the in-flight poll ID, masking stalled QUIC progress. Under RTT/idle stretches this leads to bogus NXDOMAINs and makes backlog diagnosis harder.
Reference: In slipstream_sockloop.c, the server path always encodes/sends the DNS response regardless of send_length. The DNS encoder defaults to NameError when the payload is empty. The Rust server now replies with NOERROR+empty payload in this case to drain the poll without lying.
Suggested fix: In the C server, if send_length == 0 and no explicit rcode is set, send NOERROR with an empty payload (or skip sending) instead of relying on the encoder's NameError default. This keeps polls clearing without emitting spurious NXDOMAIN responses and aligns behavior with the Rust implementation.