http-fetch: do not use curl_message after releasing it
When curl_message is released using curl_multi_remove_handle(), it's contents are undefined. Therefore, get the information before releasing it. Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
67ffdf4c0a
commit
90279074ca
@ -578,6 +578,7 @@ void process_curl_messages(void)
|
|||||||
|
|
||||||
while (curl_message != NULL) {
|
while (curl_message != NULL) {
|
||||||
if (curl_message->msg == CURLMSG_DONE) {
|
if (curl_message->msg == CURLMSG_DONE) {
|
||||||
|
int curl_result = curl_message->data.result;
|
||||||
slot = active_queue_head;
|
slot = active_queue_head;
|
||||||
while (slot != NULL &&
|
while (slot != NULL &&
|
||||||
slot->curl != curl_message->easy_handle)
|
slot->curl != curl_message->easy_handle)
|
||||||
@ -587,7 +588,7 @@ void process_curl_messages(void)
|
|||||||
active_requests--;
|
active_requests--;
|
||||||
slot->done = 1;
|
slot->done = 1;
|
||||||
slot->in_use = 0;
|
slot->in_use = 0;
|
||||||
slot->curl_result = curl_message->data.result;
|
slot->curl_result = curl_result;
|
||||||
curl_easy_getinfo(slot->curl,
|
curl_easy_getinfo(slot->curl,
|
||||||
CURLINFO_HTTP_CODE,
|
CURLINFO_HTTP_CODE,
|
||||||
&slot->http_code);
|
&slot->http_code);
|
||||||
@ -599,8 +600,7 @@ void process_curl_messages(void)
|
|||||||
fprintf(stderr, "Received DONE message for unknown request!\n");
|
fprintf(stderr, "Received DONE message for unknown request!\n");
|
||||||
}
|
}
|
||||||
if (request != NULL) {
|
if (request != NULL) {
|
||||||
request->curl_result =
|
request->curl_result = curl_result;
|
||||||
curl_message->data.result;
|
|
||||||
request->http_code = slot->http_code;
|
request->http_code = slot->http_code;
|
||||||
request->slot = NULL;
|
request->slot = NULL;
|
||||||
request->state = COMPLETE;
|
request->state = COMPLETE;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user