Commit 44debdde authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

Better support for being used with the multi interface without the *fd_set()

and proper select()ing have been made.
parent c6cf2b8e
Loading
Loading
Loading
Loading
+10 −2
Original line number Original line Diff line number Diff line
@@ -178,8 +178,12 @@ CURLcode Curl_readwrite(struct connectdata *conn,
  int didwhat=0;
  int didwhat=0;


  do {
  do {
    /* If we still have reading to do, we check if we have a readable
       socket. Sometimes the reafdp is NULL, it no fd_set was done using
       the multi interface and then we can do nothing but to attempt a
       read to be sure. */
    if((k->keepon & KEEP_READ) &&
    if((k->keepon & KEEP_READ) &&
       FD_ISSET(conn->sockfd, k->readfdp)) {
       (!k->readfdp || FD_ISSET(conn->sockfd, k->readfdp))) {


      /* read! */
      /* read! */
      result = Curl_read(conn, conn->sockfd, k->buf,
      result = Curl_read(conn, conn->sockfd, k->buf,
@@ -746,8 +750,12 @@ CURLcode Curl_readwrite(struct connectdata *conn,
      } /* if (! header and data to read ) */
      } /* if (! header and data to read ) */
    } /* if( read from socket ) */
    } /* if( read from socket ) */


    /* If we still have writing to do, we check if we have a writable
       socket. Sometimes the writefdp is NULL, it no fd_set was done using
       the multi interface and then we can do nothing but to attempt a
       write to be sure. */
    if((k->keepon & KEEP_WRITE) &&
    if((k->keepon & KEEP_WRITE) &&
       FD_ISSET(conn->writesockfd, k->writefdp)) {
       (!k->writefdp || FD_ISSET(conn->writesockfd, k->writefdp)) ) {
      /* write */
      /* write */


      int i, si;
      int i, si;