Crafter.Network/tests
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jorijn van der Graaf 7ee938c98e
feat(http1): ClientHTTP1::Fetch follows redirects by the RFC, on a URL type
One request to an http(s) URL with redirects followed by RFC 9110 §15.4:
301, 302, 303, 307 and 308 for every method; a 303 makes the request a
GET without its body and content headers, a 301 or 302 does so for a POST
alone, a 307 or 308 keeps the method and the body. The Location is
resolved against the sending URL by RFC 3986, a hop between http and
https is allowed, Authorization, Proxy-Authorization and Cookie are
dropped on a change of origin, and each hop is a client of its own, since
one ClientHTTP1 is one origin. A redirect without a usable Location, to
another scheme, back to a URL already visited or past maxRedirects comes
back as the response, with `stop` saying why.

The new :URL partition is the URL type behind it, exported: Parse,
Resolve (RFC 3986 §5.2; its §5.4 examples are the test), ToString, and
the pieces a request is built from.

This replaces the FetchHTTP1 free function, which followed redirects the
way Python's urllib did (its repeat limit, its quoting of the Location, a
POST turned back on a 307) for a port that no longer needs the fidelity.

Breaking: FetchHTTP1, FetchOptionsHTTP1 and FetchResultHTTP1 are gone;
use ClientHTTP1::Fetch, FetchOptions and FetchResult, whose `url` is a
URL and whose `limited` became `stop`.
2026-10-31 20:39:43 +01:00
..
ShouldBindLoopbackEphemeral feat(tcp): socket errors as std::system_error, with the phase that failed 2026-10-31 20:33:37 +01:00
ShouldBuildWithoutQUIC feat: TCP-only builds; TCP options and timeouts; receives that report and keep what arrived 2026-10-20 20:04:57 +02:00
ShouldConfigureTCP feat: TCP-only builds; TCP options and timeouts; receives that report and keep what arrived 2026-10-20 20:04:57 +02:00
ShouldConnectDualStack feat(tcp): socket errors as std::system_error, with the phase that failed 2026-10-31 20:33:37 +01:00
ShouldEchoWebTransport SPDX license 2026-07-22 17:55:45 +02:00
ShouldFallbackUnknownRoutes test(http): replay one fallback route table over both listeners 2026-07-28 19:42:16 +00:00
ShouldFollowRedirectsHTTP1 feat(http1): ClientHTTP1::Fetch follows redirects by the RFC, on a URL type 2026-10-31 20:39:43 +01:00
ShouldHonourQUICSettings quic settings 2026-08-25 19:17:22 +02:00
ShouldInteropCurlHTTP1 feat(http1): add an HTTP/1.1 client and listener 2026-07-27 00:45:09 +00:00
ShouldInteropCurlHTTPS1 test(https): give the TLS tests ports of their own 2026-07-28 20:34:23 +00:00
ShouldNotDropEarlyStreams SPDX license 2026-07-22 17:55:45 +02:00
ShouldParseHTTP1 feat(http1): add an HTTP/1.1 client and listener 2026-07-27 00:45:09 +00:00
ShouldParseURLs feat(http1): ClientHTTP1::Fetch follows redirects by the RFC, on a URL type 2026-10-31 20:39:43 +01:00
ShouldRecieveTCP feat: TCP-only builds; TCP options and timeouts; receives that report and keep what arrived 2026-10-20 20:04:57 +02:00
ShouldReportClosedQUICStream feat: TCP-only builds; TCP options and timeouts; receives that report and keep what arrived 2026-10-20 20:04:57 +02:00
ShouldReportConnectErrors feat(tcp): socket errors as std::system_error, with the phase that failed 2026-10-31 20:33:37 +01:00
ShouldReportIoErrors feat(tcp): socket errors as std::system_error, with the phase that failed 2026-10-31 20:33:37 +01:00
ShouldRequireClientCertificateHTTPS1 test(https): give the TLS tests ports of their own 2026-07-28 20:34:23 +00:00
ShouldSend SPDX license 2026-07-22 17:55:45 +02:00
ShouldSendRecieveHTTP SPDX license 2026-07-22 17:55:45 +02:00
ShouldSendRecieveHTTP1 docs(http1): document the HTTP/1.1 stack, and expose the client's timeout 2026-07-27 01:02:37 +00:00
ShouldSendRecieveHTTPS1 test(https): give the TLS tests ports of their own 2026-07-28 20:34:23 +00:00
ShouldSendRecieveKeepaliveHTTP SPDX license 2026-07-22 17:55:45 +02:00
ShouldSendRecieveKeepaliveHTTP1 feat(http1): add an HTTP/1.1 client and listener 2026-07-27 00:45:09 +00:00
ShouldSendRecieveLargeHTTP SPDX license 2026-07-22 17:55:45 +02:00
ShouldSendRecieveLargeHTTP1 feat(http1): add an HTTP/1.1 client and listener 2026-07-27 00:45:09 +00:00
ShouldSendRecieveQUICDatagram SPDX license 2026-07-22 17:55:45 +02:00
ShouldSendRecieveQUICStream SPDX license 2026-07-22 17:55:45 +02:00
ShouldSurviveAbuseHTTP1 fix(http1): close a finished connection instead of holding it until reap 2026-07-27 00:56:53 +00:00
ShouldSurviveConnectionChurn fix(quic): close stream handles whose async StreamStart lost the teardown race 2026-08-25 23:18:01 +00:00
ShouldTimeoutSilentHTTP1 feat(http1): bound the connect, and FetchHTTP1 for a URL with redirects 2026-10-31 20:28:32 +01:00