stream->error_code = error_code;
stream->closed = TRUE;
+
+ /* remove the entry from the hash as the stream is now gone */
+ Curl_hash_delete(&conn->proto.httpc.streamsh,
+ &stream_id, sizeof(stream_id));
+ DEBUGF(infof(conn->data, "Removed stream %x hash!\n", stream_id));
}
return 0;
}
*err = CURLE_HTTP2;
return -1;
}
- DEBUGF(infof(data, "http2_recv returns 0\n"));
+ DEBUGF(infof(data, "http2_recv returns 0, http2_handle_stream_close\n"));
return 0;
}
conn->readchannel_inuse = FALSE;
if(Curl_removeHandleFromPipeline(data, conn->send_pipe) && send_head)
conn->writechannel_inuse = FALSE;
-
- if(conn->httpversion == 20) {
- /* delete this handle from the stream hash */
- struct HTTP *stream = data->req.protop;
- if(stream && Curl_hash_delete(&conn->proto.httpc.streamsh,
- &stream->stream_id,
- sizeof(stream->stream_id))) {
- infof(conn->data, "Failed to remove handle from h2 stream hash!!\n");
- }
- }
}
static void signalPipeClose(struct curl_llist *pipeline, bool pipe_broke)