Commit 19ca0c0f authored by Kamil Dudka's avatar Kamil Dudka
Browse files

- Improved Curl_read() to not ignore the error returned from Curl_ssl_recv().

parent 6728334e
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -6,6 +6,9 @@

                                  Changelog

Kamil Dudka (19 Mar 2010)
- Improved Curl_read() to not ignore the error returned from Curl_ssl_recv().

Daniel Stenberg (15 Mar 2010)
- Constantine Sapuntzakis brought a patch:

+4 −2
Original line number Diff line number Diff line
@@ -538,9 +538,11 @@ int Curl_read(struct connectdata *conn, /* connection data */
  if(conn->ssl[num].state == ssl_connection_complete) {
    nread = Curl_ssl_recv(conn, num, buffertofill, bytesfromsocket);

    if(nread == -1) {
    if(nread == -1)
      return -1; /* -1 from Curl_ssl_recv() means EWOULDBLOCK */
    }
    else if(nread == -2)
      /* -2 from Curl_ssl_recv() means a true error, not EWOULDBLOCK */
      return CURLE_RECV_ERROR;
  }
  else if(Curl_ssh_enabled(conn, (PROT_SCP|PROT_SFTP))) {
    if(conn->protocol & PROT_SCP)
+5 −5
Original line number Diff line number Diff line
@@ -399,7 +399,7 @@ struct curl_slist *Curl_ssl_engines_list(struct SessionHandle *data)
  return curlssl_engines_list(data);
}

/* return number of sent (non-SSL) bytes */
/* return number of sent (non-SSL) bytes; -1 on error */
ssize_t Curl_ssl_send(struct connectdata *conn,
                      int sockindex,
                      const void *mem,
@@ -411,8 +411,8 @@ ssize_t Curl_ssl_send(struct connectdata *conn,
/* return number of received (decrypted) bytes */

/*
 * If the read would block (EWOULDBLOCK) we return -1. Otherwise we return
 * a regular CURLcode value.
 * If the read would block (EWOULDBLOCK) we return -1. If an error occurs during
 * the read, we return -2. Otherwise we return the count of bytes transfered.
 */
ssize_t Curl_ssl_recv(struct connectdata *conn, /* connection data */
                      int sockindex,            /* socketindex */
@@ -425,9 +425,9 @@ ssize_t Curl_ssl_recv(struct connectdata *conn, /* connection data */
  nread = curlssl_recv(conn, sockindex, mem, len, &block);
  if(nread == -1) {
    if(!block)
      return 0; /* this is a true error, not EWOULDBLOCK */
      return -2; /* this is a true error, not EWOULDBLOCK */
    else
      return -1;
      return -1; /* EWOULDBLOCK */
  }

  return nread;