multi: simplified singlesocket
Since sh_getentry() now checks for invalid sockets itself and by narrowing the scope of the remove_sock_from_hash variable.
This commit is contained in:
parent
8eaf884417
commit
c3aca6ed47
19
lib/multi.c
19
lib/multi.c
@ -2000,7 +2000,6 @@ static void singlesocket(struct Curl_multi *multi,
|
|||||||
curl_socket_t s;
|
curl_socket_t s;
|
||||||
int num;
|
int num;
|
||||||
unsigned int curraction;
|
unsigned int curraction;
|
||||||
bool remove_sock_from_hash;
|
|
||||||
|
|
||||||
for(i=0; i< MAX_SOCKSPEREASYHANDLE; i++)
|
for(i=0; i< MAX_SOCKSPEREASYHANDLE; i++)
|
||||||
socks[i] = CURL_SOCKET_BAD;
|
socks[i] = CURL_SOCKET_BAD;
|
||||||
@ -2068,13 +2067,12 @@ static void singlesocket(struct Curl_multi *multi,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(s != CURL_SOCKET_BAD) {
|
|
||||||
|
|
||||||
/* this socket has been removed. Tell the app to remove it */
|
|
||||||
remove_sock_from_hash = TRUE;
|
|
||||||
|
|
||||||
entry = sh_getentry(&multi->sockhash, s);
|
entry = sh_getentry(&multi->sockhash, s);
|
||||||
if(entry) {
|
if(entry) {
|
||||||
|
/* this socket has been removed. Tell the app to remove it */
|
||||||
|
bool remove_sock_from_hash = TRUE;
|
||||||
|
|
||||||
/* check if the socket to be removed serves a connection which has
|
/* check if the socket to be removed serves a connection which has
|
||||||
other easy-s in a pipeline. In this case the socket should not be
|
other easy-s in a pipeline. In this case the socket should not be
|
||||||
removed. */
|
removed. */
|
||||||
@ -2113,12 +2111,6 @@ static void singlesocket(struct Curl_multi *multi,
|
|||||||
head of the correct pipe will be taken according to the
|
head of the correct pipe will be taken according to the
|
||||||
action. */
|
action. */
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
/* just a precaution, this socket really SHOULD be in the hash already
|
|
||||||
but in case it isn't, we don't have to tell the app to remove it
|
|
||||||
either since it never got to know about it */
|
|
||||||
remove_sock_from_hash = FALSE;
|
|
||||||
|
|
||||||
if(remove_sock_from_hash) {
|
if(remove_sock_from_hash) {
|
||||||
/* in this case 'entry' is always non-NULL */
|
/* in this case 'entry' is always non-NULL */
|
||||||
@ -2130,9 +2122,8 @@ static void singlesocket(struct Curl_multi *multi,
|
|||||||
entry->socketp);
|
entry->socketp);
|
||||||
sh_delentry(&multi->sockhash, s);
|
sh_delentry(&multi->sockhash, s);
|
||||||
}
|
}
|
||||||
|
} /* if sockhash entry existed */
|
||||||
}
|
} /* for loop over numsocks */
|
||||||
}
|
|
||||||
|
|
||||||
memcpy(data->sockets, socks, num*sizeof(curl_socket_t));
|
memcpy(data->sockets, socks, num*sizeof(curl_socket_t));
|
||||||
data->numsocks = num;
|
data->numsocks = num;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user