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:
Daniel Stenberg 2016-03-14 09:44:14 +01:00
parent 8eaf884417
commit c3aca6ed47

View File

@ -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;