mirror of
https://github.com/curl/curl.git
synced 2026-07-30 22:48:03 +03:00
Merge 0762af9898 into 1d7b8e6c29
This commit is contained in:
commit
e204abf4c3
2 changed files with 12 additions and 3 deletions
14
lib/multi.c
14
lib/multi.c
|
|
@ -86,7 +86,8 @@ static void multi_xfer_tbl_dump(struct Curl_multi *multi);
|
|||
|
||||
static const struct curltime *multi_now(struct Curl_multi *multi)
|
||||
{
|
||||
curlx_pnow(&multi->now);
|
||||
if(!multi->processing_socket)
|
||||
curlx_pnow(&multi->now);
|
||||
return &multi->now;
|
||||
}
|
||||
|
||||
|
|
@ -3266,6 +3267,9 @@ static CURLMcode multi_socket(struct Curl_multi *multi,
|
|||
(void)ev_bitmask;
|
||||
sigpipe_init(&pipe_ctx);
|
||||
|
||||
curlx_pnow(&multi->now);
|
||||
multi->processing_socket = TRUE;
|
||||
|
||||
if(checkall) {
|
||||
/* *perform() deals with running_handles on its own */
|
||||
mresult = multi_perform(multi, running_handles);
|
||||
|
|
@ -3298,7 +3302,7 @@ static CURLMcode multi_socket(struct Curl_multi *multi,
|
|||
goto out;
|
||||
}
|
||||
|
||||
multi_mark_expired_as_dirty(multi, multi_now(multi));
|
||||
multi_mark_expired_as_dirty(multi, &multi->now);
|
||||
mresult = multi_run_dirty(multi, &pipe_ctx, &run_xfers);
|
||||
if(mresult)
|
||||
goto out;
|
||||
|
|
@ -3329,6 +3333,7 @@ out:
|
|||
|
||||
if(CURLM_OK >= mresult)
|
||||
mresult = Curl_update_timer(multi);
|
||||
multi->processing_socket = FALSE;
|
||||
return mresult;
|
||||
}
|
||||
|
||||
|
|
@ -3730,7 +3735,10 @@ void Curl_expire_ex(struct Curl_easy *data,
|
|||
|
||||
DEBUGASSERT(id < EXPIRE_LAST);
|
||||
|
||||
set = *Curl_pgrs_now(data);
|
||||
if(multi->processing_socket)
|
||||
set = multi->now;
|
||||
else
|
||||
curlx_pnow(&set);
|
||||
set.tv_sec += (time_t)(milli / 1000); /* may be a 64 to 32-bit conversion */
|
||||
set.tv_usec += (int)(milli % 1000) * 1000;
|
||||
|
||||
|
|
|
|||
|
|
@ -206,6 +206,7 @@ struct Curl_multi {
|
|||
BIT(xfer_buf_borrowed); /* xfer_buf is currently being borrowed */
|
||||
BIT(xfer_ulbuf_borrowed); /* xfer_ulbuf is currently being borrowed */
|
||||
BIT(xfer_sockbuf_borrowed); /* xfer_sockbuf is currently being borrowed */
|
||||
BIT(processing_socket);
|
||||
BIT(quick_exit); /* do not join threads on cleanup */
|
||||
#ifdef DEBUGBUILD
|
||||
BIT(warned); /* true after user warned of DEBUGBUILD */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue