allow http/1.0 to work with mixed-case Keep-Alive #308
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
tldr; Is that certain clients (in this case apache bench) will send http/1.0 requests with "Keep-Alive" and not "keep-alive" and we currently don't respect that.
I noticed this issue while comparing ab to other servers which seem to handle this correctly. I originally asked about this behavior in the elixir forums
After taking a look and doing some debugging I saw that we fail to lower-case the connection header prior to comparison. Instead of incurring the penalty of lower-casing the entire header I'm assuming the mixed-case pattern match is a performant solution? Strictly speaking we probably should lower-case it to be "compliant"
I did look at the
get_connection_header_keys/1
function but it didn't really look like a good fit since it returns that list. Happy to hear feedback and change anything.