Source: ruby-http-parser.rb
Version: 0.6.0-3+b3
Severity: serious
Tags: upstream

Dear Maintainer,

your package build-depends on http-parser, and a new version of that
one  has been around for a while. Even before eventually uploading last
night I already saw a problem in the test suite of your package.
However, due to a fault on my side, the new http-parser went to
unstable instead of experimental. So this increases the pressure for
your package, sorry about that.

With http-parser 2.7.1, one test fails:

  1) HTTP::Parser should parse request: line folding in header value
     Failure/Error: expect(@headers).to eq(test['headers'])

       expected: {"Line1"=>"abcdefghijklmno qrs", "Line2"=>"line2\t"}
            got: {"Line1"=>"abc\tdef ghi\t\tjkl  mno \t \tqrs", 
"Line2"=>"line2\t"}

       (compared using ==)

       Diff:
       @@ -1,3 +1,3 @@
       -"Line1" => "abcdefghijklmno qrs",
       +"Line1" => "abc\tdef ghi\t\tjkl  mno \t \tqrs",
        "Line2" => "line2\t",
     # ./spec/parser_spec.rb:347:in `block (4 levels) in <top (required)>'

If I understand correctly, this is taken from spec/support/requests.json
line 445 and 457f.

While doubtlessly http-parser changed the behaviour, I'm not sure yet
whether this wasn't rather about fixing bugs - bugs the test in
ruby-http-parser.rb relied upon.

However, HTTP header line folding is complicated and actually also
deprecated in RFC 7230. Reading that one and also the older description
in RFC 2616 I guess there a too many freedoms to expect a certain
result. Also it seems http-parser 2.7.1 does unfolding in a ...
surprising manner.

Now, quite frankly, my main interest is a sound solution. Otherwise,
I'm not keen on legal discussions, especially when it's about a
deprecated feature like this one. It's my job to sort these things out
with http-parser upstream but since I'm not sure how long this will
take: Would you mind disabling or relaxing the test on your side for
the time being? You might as well upgrade the test to the one in
http-parser/test.c¹ which is where obviously it was taken from in the
first place - but I'd expect this to change again soon.

Sorry for the mess, and kind regards,

    Christoph

¹ https://github.com/nodejs/http-parser/blob/master/test.c (line 614)

Attachment: signature.asc
Description: Digital signature

Reply via email to