curl / Mailing Lists / curl-library / Single Mail

curl-library

issue with libcurl/7.50.3 and http2 with multipart upload request?

From: Michele Rossi <michele.rossi_at_gmail.com>
Date: Thu, 10 Nov 2016 14:38:24 +0100

hello LIBCURL developers,

we have found a problem while trying to perform a multipart HTTP PUT
request against an HTTP 2.0 server (Jetty 9.3.14) using HTTR (an R library)
which in turn uses libcurl 7.50.3.

See below for the explanation by Simone Bordet (one of the dev leads of the
Jetty project).

I am also attaching the original log file although I don't think it makes
for an easy read.

Perhaps you will want to check the relevant code in case there is something
obvious to fix.

Happy to help with further logs / fiddler images / anything else you might
need.

(We have solved the problem by disabling ALPN on LIBCURL).

Many thanks,
Michele

---------- Forwarded message ----------
From: Simone Bordet <sbordet_at_webtide.com>
Date: 8 November 2016 at 15:47
Subject: Re: [jetty-dev] "no content" timeout exception while upl multipart
file on 9.3.12 - 9.3.13 - 9.3.14?
To: Michele Rossi <michele.rossi_at_gmail.com>
Cc: "Jetty @ Eclipse developer discussion list" <jetty-dev_at_eclipse.org>,
Simone Bordet <sbordet_at_webtide.com>

Hi,

On Tue, Nov 8, 2016 at 12:32 PM, Michele Rossi <michele.rossi_at_gmail.com>
wrote:
> hi,
>
> I have enabled the Jetty low-level logs and now HTTP2 negotiations and
> traffic are visible but I am far from understanding what's going on :)
>
> I have attached the logs here in case a good soul out there feels like
> taking a look (if it benefits the project too).
>
> For now we have resolved our problem by disabling HTTP2 on the client
making
> this particular multipart upload request.

What client are you using ?

I ask because the logs show that the last DATA frame (line 12305)
arrives with the last 48 bytes that would make the total of 1489449
bytes as specified by the Content-Length, but that DATA frame has
end=false, while it should have end=true.

Because there is no indication that the stream has ended, Jetty waits
for more data from the client until it times out.

In HTTP/2 the framing is done by the end stream flags, not by the fact
that the Content-Length has been reached.

It appears to me a client bug.

--
Simone Bordet
----
http://cometd.org
http://webtide.com
Developer advice, training, services and support
from the Jetty & CometD experts.


-------------------------------------------------------------------
List admin: https://cool.haxx.se/list/listinfo/curl-library
Etiquette: https://curl.haxx.se/mail/etiquette.html

Received on 2016-11-10