]> granicus.if.org Git - curl/commitdiff
Curl_http2_setup: only do it once and enable multiplex on the server
authorDaniel Stenberg <daniel@haxx.se>
Mon, 27 Apr 2015 10:52:07 +0000 (12:52 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 18 May 2015 06:54:54 +0000 (08:54 +0200)
Once we know we are HTTP/2 enabled we know the server can multiplex.

lib/http2.c

index 9ff25803deaa53879c838bbefe052bae3fc071bd..d01b52efdc590bb8157aeec864a63f790bf47bf7 100644 (file)
@@ -32,6 +32,7 @@
 #include "curl_base64.h"
 #include "rawstr.h"
 #include "multiif.h"
+#include "bundles.h"
 
 /* The last #include files should be: */
 #include "curl_memory.h"
@@ -972,6 +973,11 @@ CURLcode Curl_http2_setup(struct connectdata *conn)
 {
   CURLcode result;
   struct http_conn *httpc = &conn->proto.httpc;
+
+  if((conn->handler == &Curl_handler_http2_ssl) ||
+     (conn->handler == &Curl_handler_http2))
+    return CURLE_OK; /* already done */
+
   if(conn->handler->flags & PROTOPT_SSL)
     conn->handler = &Curl_handler_http2_ssl;
   else
@@ -981,7 +987,7 @@ CURLcode Curl_http2_setup(struct connectdata *conn)
   if(result)
     return result;
 
-  infof(conn->data, "Using HTTP2\n");
+  infof(conn->data, "Using HTTP2, server supports multi-use\n");
   httpc->bodystarted = FALSE;
   httpc->error_code = NGHTTP2_NO_ERROR;
   httpc->closed = FALSE;
@@ -996,6 +1002,7 @@ CURLcode Curl_http2_setup(struct connectdata *conn)
   httpc->status_code = -1;
 
   conn->httpversion = 20;
+  conn->bundle->server_supports_pipelining = TRUE;
 
   return CURLE_OK;
 }