aboutsummaryrefslogtreecommitdiff
path: root/lib/ssluse.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2004-11-19 08:52:33 +0000
committerDaniel Stenberg <daniel@haxx.se>2004-11-19 08:52:33 +0000
commit1a05a90f1ce86394d7966aaaa9539adaa228c6bf (patch)
tree2b9cafe58b4fa7bf01d1b58a23bc5e66157d3279 /lib/ssluse.c
parentdcea109bb5ce1c8afeb0510945eb15e86cfcf1dc (diff)
David Phillips' FD_SETSIZE fix
Diffstat (limited to 'lib/ssluse.c')
-rw-r--r--lib/ssluse.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/lib/ssluse.c b/lib/ssluse.c
index 47715ad9c..1afcb8e54 100644
--- a/lib/ssluse.c
+++ b/lib/ssluse.c
@@ -46,6 +46,7 @@
#include "ssluse.h"
#include "connect.h" /* Curl_ourerrno() proto */
#include "strequal.h"
+#include "select.h"
#define _MPRINTF_REPLACE /* use the internal *printf() functions */
#include <curl/mprintf.h>
@@ -1260,9 +1261,8 @@ Curl_SSLConnect(struct connectdata *conn,
SSL_set_fd(connssl->handle, sockfd);
while(1) {
- fd_set writefd;
- fd_set readfd;
- struct timeval interval;
+ int writefd;
+ int readfd;
long timeout_ms;
/* Find out if any timeout is set. If not, use 300 seconds.
@@ -1296,8 +1296,8 @@ Curl_SSLConnect(struct connectdata *conn,
timeout_ms= DEFAULT_CONNECT_TIMEOUT;
- FD_ZERO(&writefd);
- FD_ZERO(&readfd);
+ readfd = CURL_SOCKET_BAD;
+ writefd = CURL_SOCKET_BAD;
err = SSL_connect(connssl->handle);
@@ -1308,9 +1308,9 @@ Curl_SSLConnect(struct connectdata *conn,
int detail = SSL_get_error(connssl->handle, err);
if(SSL_ERROR_WANT_READ == detail)
- FD_SET(sockfd, &readfd);
+ readfd = sockfd;
else if(SSL_ERROR_WANT_WRITE == detail)
- FD_SET(sockfd, &writefd);
+ writefd = sockfd;
else {
/* untreated error */
unsigned long errdetail;
@@ -1373,13 +1373,8 @@ Curl_SSLConnect(struct connectdata *conn,
/* we have been connected fine, get out of the connect loop */
break;
- interval.tv_sec = (int)(timeout_ms/1000);
- timeout_ms -= interval.tv_sec*1000;
-
- interval.tv_usec = timeout_ms*1000;
-
while(1) {
- what = select(sockfd+1, &readfd, &writefd, NULL, &interval);
+ what = Curl_select(readfd, writefd, timeout_ms);
if(what > 0)
/* reabable or writable, go loop in the outer loop */
break;