]> granicus.if.org Git - curl/commitdiff
http2 push: add missing inits of new stream
authorDaniel Stenberg <daniel@haxx.se>
Sun, 29 Nov 2015 23:11:42 +0000 (00:11 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Sun, 29 Nov 2015 23:11:42 +0000 (00:11 +0100)
- set the correct stream_id for pushed streams
- init maxdownload and size properly

lib/http2.c

index 877328207177038f7227493aa4a3d37182997e68..0a68cbb055686c15bf5e37797d4f74dbb1b9d331 100644 (file)
@@ -329,12 +329,13 @@ static int push_promise(struct SessionHandle *data,
                frame->promised_stream_id));
   if(data->multi->push_cb) {
     struct HTTP *stream;
+    struct HTTP *newstream;
     struct curl_pushheaders heads;
     CURLMcode rc;
     struct http_conn *httpc;
     size_t i;
     /* clone the parent */
-    CURL *newhandle = duphandle(data);
+    struct SessionHandle *newhandle = duphandle(data);
     if(!newhandle) {
       infof(data, "failed to duplicate handle\n");
       rv = 1; /* FAIL HARD */
@@ -369,6 +370,11 @@ static int push_promise(struct SessionHandle *data,
       goto fail;
     }
 
+    newstream = newhandle->req.protop;
+    newstream->stream_id = frame->promised_stream_id;
+    newhandle->req.maxdownload = -1;
+    newhandle->req.size = -1;
+
     /* approved, add to the multi handle and immediately switch to PERFORM
        state with the given connection !*/
     rc = Curl_multi_add_perform(data->multi, newhandle, conn);