async-h1
async-h1 copied to clipboard
gracefully fail HTTP/1.0 connections
Currently our handling of HTTP/1.0 connections is rather blunt: we log an error and exit. We could do better by sending back a 426: Upgrade Required header with an Upgrade: HTTP/1.1 field. A client that sends an HTTP/1.0 request will receive a more informative response that's not "TCP connection aborted", and if it's sufficiently advanced it may even know to upgrade to HTTP/1.1 and try again.
We may choose to add support for HTTP/1.0 proper in the future. But that requires a significant amount of design work and research, and until then we can at least ensure we fail more gracefully when detecting HTTP/1.0 connections.
response payload
HTTP/1.0 426 Upgrade Required
Upgrade: HTTP/1.1
Connection: Upgrade
Content-Length: 53
Content-Type: text/plain
This service requires use of the HTTP/1.1 protocol.
chose to implement this with 505 http version not supported, since it's not properly an upgrade, in the sense of http upgrades
@jbr oh yeah, that's entirely reasonable -- and with HTTP/1.0 support enabled by setting the host, there's definitely a clear path to "upgrading". Albeit through a somewhat more manual approach.