blackbull.fault_injection.catalogue.h1¶
blackbull.fault_injection.catalogue.h1
¶
Named HTTP/1.1 server-side misbehaviour cases.
The HTTP/1.1 twin of :mod:blackbull.fault_injection.catalogue.h2: each
entry is one thing a real server does wrong, named so a suite can
parametrize over the set and report which case broke a client.
Every case is raw bytes. The server assembles its own output rather than
going through the production send path โ see
:mod:blackbull.fault_injection.h1_server for why that is load-bearing.
chunked_never_terminates()
¶
Well-formed chunks that never reach the zero-length terminator.
chunked_stops_mid_chunk()
¶
Announces a 5-byte chunk, sends 2, then EOF.
closed_without_response()
¶
Accepts the request, answers nothing, resets the connection.
conflicting_content_length()
¶
Two Content-Length headers that disagree (RFC 9110 ยง8.6).
content_length_overstated()
¶
Declares 100 bytes, sends 5, then closes.
The client must not present the short body as a complete response.
content_length_understated()
¶
Declares 2 bytes and sends 40.
The surplus is what a keep-alive client would parse as the next response's status line โ the response-side twin of request smuggling.
half_closed_after_headers()
¶
Announces a body, sends FIN on the write side, keeps reading.
Distinct from closed_without_response (RST, nothing to read) and
from content_length_overstated (a full close after partial bytes):
here the connection stays readable, so a client that treats FIN as a
reset, or that waits for a close it will not get, behaves differently
from one that reads EOF and reports a truncated body.
headers_never_end()
¶
Header lines forever, never the blank line that ends the head.
silent_after_request()
¶
Holds the connection open and never writes.
What a client's own response deadline is measured against; the server contributes nothing but patience.
trickled_status_line()
¶
A complete, correct response delivered one byte at a time.
Nothing here is malformed โ the pacing is the fault, which is why it cannot be expressed as anything but raw bytes plus an interval.