mirror of
https://github.com/moparisthebest/curl
synced 2024-12-23 00:28:48 -05:00
Make the getoff all pipelines function only set _inuse to FALSE if the
specified data pointer was head.
This commit is contained in:
parent
5f0a3797c9
commit
3ca360391a
32
lib/url.c
32
lib/url.c
@ -2378,20 +2378,6 @@ int Curl_removeHandleFromPipeline(struct SessionHandle *handle,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* remove the specified connection from all (possible) pipelines and related
|
|
||||||
queues */
|
|
||||||
void Curl_getoff_all_pipelines(struct SessionHandle *data,
|
|
||||||
struct connectdata *conn)
|
|
||||||
{
|
|
||||||
if(Curl_removeHandleFromPipeline(data, conn->recv_pipe) &&
|
|
||||||
conn->readchannel_inuse)
|
|
||||||
conn->readchannel_inuse = FALSE;
|
|
||||||
if(Curl_removeHandleFromPipeline(data, conn->send_pipe) &&
|
|
||||||
conn->writechannel_inuse)
|
|
||||||
conn->writechannel_inuse = FALSE;
|
|
||||||
Curl_removeHandleFromPipeline(data, conn->pend_pipe);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if 0 /* this code is saved here as it is useful for debugging purposes */
|
#if 0 /* this code is saved here as it is useful for debugging purposes */
|
||||||
static void Curl_printPipeline(struct curl_llist *pipeline)
|
static void Curl_printPipeline(struct curl_llist *pipeline)
|
||||||
{
|
{
|
||||||
@ -2416,6 +2402,24 @@ static struct SessionHandle* gethandleathead(struct curl_llist *pipeline)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* remove the specified connection from all (possible) pipelines and related
|
||||||
|
queues */
|
||||||
|
void Curl_getoff_all_pipelines(struct SessionHandle *data,
|
||||||
|
struct connectdata *conn)
|
||||||
|
{
|
||||||
|
bool recv_head = conn->readchannel_inuse &&
|
||||||
|
(gethandleathead(conn->recv_pipe) == data);
|
||||||
|
|
||||||
|
bool send_head = conn->writechannel_inuse &&
|
||||||
|
(gethandleathead(conn->send_pipe) == data);
|
||||||
|
|
||||||
|
if(Curl_removeHandleFromPipeline(data, conn->recv_pipe) && recv_head)
|
||||||
|
conn->readchannel_inuse = FALSE;
|
||||||
|
if(Curl_removeHandleFromPipeline(data, conn->send_pipe) && send_head)
|
||||||
|
conn->writechannel_inuse = FALSE;
|
||||||
|
Curl_removeHandleFromPipeline(data, conn->pend_pipe);
|
||||||
|
}
|
||||||
|
|
||||||
static void signalPipeClose(struct curl_llist *pipeline)
|
static void signalPipeClose(struct curl_llist *pipeline)
|
||||||
{
|
{
|
||||||
struct curl_llist_element *curr;
|
struct curl_llist_element *curr;
|
||||||
|
Loading…
Reference in New Issue
Block a user