Commit c3aca6ed authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

multi: simplified singlesocket

Since sh_getentry() now checks for invalid sockets itself and by
narrowing the scope of the remove_sock_from_hash variable.
parent 8eaf8844
Loading
Loading
Loading
Loading
+40 −49
Original line number Diff line number Diff line
@@ -2000,7 +2000,6 @@ static void singlesocket(struct Curl_multi *multi,
  curl_socket_t s;
  int num;
  unsigned int curraction;
  bool remove_sock_from_hash;

  for(i=0; i< MAX_SOCKSPEREASYHANDLE; i++)
    socks[i] = CURL_SOCKET_BAD;
@@ -2068,13 +2067,12 @@ static void singlesocket(struct Curl_multi *multi,
        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);
    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
         other easy-s in a pipeline. In this case the socket should not be
         removed. */
@@ -2113,12 +2111,6 @@ static void singlesocket(struct Curl_multi *multi,
           head of the correct pipe will be taken according to the
           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) {
        /* in this case 'entry' is always non-NULL */
@@ -2130,9 +2122,8 @@ static void singlesocket(struct Curl_multi *multi,
                           entry->socketp);
        sh_delentry(&multi->sockhash, s);
      }

    }
  }
    } /* if sockhash entry existed */
  } /* for loop over numsocks */

  memcpy(data->sockets, socks, num*sizeof(curl_socket_t));
  data->numsocks = num;