curl / Mailing Lists / curl-library / Single Mail

curl-library

http2 stream dependency observation

From: Kunal Ekawde via curl-library <curl-library_at_cool.haxx.se>
Date: Mon, 18 Mar 2019 13:01:45 +0530

Hello Everyone,

I'm trying HTTP/2 stream dependency transfers using libcurl 7.64.0 +
nghttp2 1.36 with server-libmicrohttpd + nghttp2 - just echo no delay.

I've used the example http2-download.c in libcurl
Just added:
      curl_easy_setopt(easy[1], CURLOPT_STREAM_DEPENDS_E, easy[2]);
      curl_easy_setopt(easy[2], CURLOPT_STREAM_DEPENDS_E, easy[0]);
before:
curl_multi_setopt(multi_handle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
  /* we start some action by calling perform right away */
curl_multi_perform(multi_handle, &still_running);

I've also attempted these setting in setup function i.e before
curl_multi_add_handle

There 2 concerns here:
1. I'm not able to specify dependency on the stream/handle which is
currently being setup. So basically, for 2 streams, I cannot set stream 1
depends on stream 3, in pcap it show stream 1 depends on stream 0. Incase
of above example, it shows, 3 exclusive depends on 0 and 5 exclusive
depends on 1. Expectation is 3 exclusive depends on 5 and 5 exclusive
depends on 1, like:
1
5
3

2. For Above example, out of 10 transfers,
   2 transfers showed order(in pcap):
   HTTP2 768 HEADERS[5]: 200 OK, HEADERS[1]: 200 OK, HEADERS[3]: 200
OK, DATA[5], DATA[1], DATA[3]

   6 transfers showed order:
   HTTP2 765 HEADERS[1]: 200 OK, HEADERS[3]: 200 OK, HEADERS[5]: 200
OK, DATA[1], DATA[3], DATA[5]

   2 showed:
   1, 5, 3

Is this expected or is the way of setting the dependency incorrect?

Thanks,
~Kunal

-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette: https://curl.haxx.se/mail/etiquette.html
Received on 2019-03-18