diff options
author | Daniel Stenberg <daniel@haxx.se> | 2018-07-17 00:29:11 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2018-07-20 22:58:42 +0200 |
commit | 7b9bc96c7716f34dbd1f525aefb77d74b8b0f528 (patch) | |
tree | 3815a1f09eb5c3fcf6ea1fb81aa1cceb1b28d197 /lib/http2.c | |
parent | 73af7bcd617a8c0312bd8a083daa5a8fad2c794e (diff) |
http2: several cleanups
- separate easy handle from connections better
- added asserts on a number of places
- added sanity check of pipelines for debug builds
Closes #2751
Diffstat (limited to 'lib/http2.c')
-rw-r--r-- | lib/http2.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/http2.c b/lib/http2.c index 8251d96df..6511451af 100644 --- a/lib/http2.c +++ b/lib/http2.c @@ -154,6 +154,11 @@ static void http2_stream_free(struct HTTP *http) } } +/* + * Disconnects *a* connection used for HTTP/2. It might be an old one from the + * connection cache and not the "main" one. Don't touch the easy handle! + */ + static CURLcode http2_disconnect(struct connectdata *conn, bool dead_connection) { @@ -164,8 +169,6 @@ static CURLcode http2_disconnect(struct connectdata *conn, nghttp2_session_del(c->h2); Curl_safefree(c->inbuf); - http2_stream_free(conn->data->req.protop); - conn->data->state.drain = 0; H2BUGF(infof(conn->data, "HTTP/2 DISCONNECT done\n")); @@ -520,6 +523,7 @@ static int push_promise(struct Curl_easy *data, if(rv) { /* denied, kill off the new handle again */ http2_stream_free(newhandle->req.protop); + newhandle->req.protop = NULL; (void)Curl_close(newhandle); goto fail; } @@ -535,6 +539,7 @@ static int push_promise(struct Curl_easy *data, if(rc) { infof(data, "failed to add handle to multi\n"); http2_stream_free(newhandle->req.protop); + newhandle->req.protop = NULL; Curl_close(newhandle); rv = 1; goto fail; |