Gisle Vanem's fixes to use CURL_SOCKET_BAD more instead of -1 for sockets.
This commit is contained in:
Родитель
326e8b9fc1
Коммит
e545e33d5f
|
@ -417,6 +417,7 @@ static bool verifyconnect(curl_socket_t sockfd)
|
||||||
/* This wasn't a successful connect */
|
/* This wasn't a successful connect */
|
||||||
return FALSE;
|
return FALSE;
|
||||||
#else
|
#else
|
||||||
|
(void)sockfd;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -571,7 +572,7 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
|
||||||
*/
|
*/
|
||||||
for (ai = remotehost->addr; ai; ai = ai->ai_next, aliasindex++) {
|
for (ai = remotehost->addr; ai; ai = ai->ai_next, aliasindex++) {
|
||||||
sockfd = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
|
sockfd = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
|
||||||
if (sockfd < 0)
|
if (sockfd == CURL_SOCKET_BAD)
|
||||||
continue;
|
continue;
|
||||||
#else
|
#else
|
||||||
/*
|
/*
|
||||||
|
@ -681,7 +682,7 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
|
||||||
}
|
}
|
||||||
before = after;
|
before = after;
|
||||||
}
|
}
|
||||||
if (sockfd < 0) {
|
if (sockfd == CURL_SOCKET_BAD) {
|
||||||
/* no good connect was made */
|
/* no good connect was made */
|
||||||
*sockconn = -1;
|
*sockconn = -1;
|
||||||
failf(data, "Connect failed");
|
failf(data, "Connect failed");
|
||||||
|
|
10
lib/ftp.c
10
lib/ftp.c
|
@ -166,7 +166,7 @@ static CURLcode AllowServerConnect(struct connectdata *conn)
|
||||||
default:
|
default:
|
||||||
/* we have received data here */
|
/* we have received data here */
|
||||||
{
|
{
|
||||||
int s;
|
curl_socket_t s;
|
||||||
size_t size = sizeof(struct sockaddr_in);
|
size_t size = sizeof(struct sockaddr_in);
|
||||||
struct sockaddr_in add;
|
struct sockaddr_in add;
|
||||||
|
|
||||||
|
@ -175,7 +175,7 @@ static CURLcode AllowServerConnect(struct connectdata *conn)
|
||||||
|
|
||||||
sclose(sock); /* close the first socket */
|
sclose(sock); /* close the first socket */
|
||||||
|
|
||||||
if (-1 == s) {
|
if (CURL_SOCKET_BAD == s) {
|
||||||
/* DIE! */
|
/* DIE! */
|
||||||
failf(data, "Error accept()ing server connect");
|
failf(data, "Error accept()ing server connect");
|
||||||
return CURLE_FTP_PORT_FAILED;
|
return CURLE_FTP_PORT_FAILED;
|
||||||
|
@ -766,7 +766,7 @@ CURLcode Curl_ftp_done(struct connectdata *conn)
|
||||||
#endif
|
#endif
|
||||||
/* shut down the socket to inform the server we're done */
|
/* shut down the socket to inform the server we're done */
|
||||||
sclose(conn->sock[SECONDARYSOCKET]);
|
sclose(conn->sock[SECONDARYSOCKET]);
|
||||||
conn->sock[SECONDARYSOCKET] = -1;
|
conn->sock[SECONDARYSOCKET] = CURL_SOCKET_BAD;
|
||||||
|
|
||||||
if(!ftp->no_transfer) {
|
if(!ftp->no_transfer) {
|
||||||
/* Let's see what the server says about the transfer we just performed,
|
/* Let's see what the server says about the transfer we just performed,
|
||||||
|
@ -2379,10 +2379,10 @@ CURLcode Curl_ftp(struct connectdata *conn)
|
||||||
if(connected)
|
if(connected)
|
||||||
retcode = Curl_ftp_nextconnect(conn);
|
retcode = Curl_ftp_nextconnect(conn);
|
||||||
|
|
||||||
if(retcode && (conn->sock[SECONDARYSOCKET] >= 0)) {
|
if(retcode && (conn->sock[SECONDARYSOCKET] != CURL_SOCKET_BAD)) {
|
||||||
/* Failure detected, close the second socket if it was created already */
|
/* Failure detected, close the second socket if it was created already */
|
||||||
sclose(conn->sock[SECONDARYSOCKET]);
|
sclose(conn->sock[SECONDARYSOCKET]);
|
||||||
conn->sock[SECONDARYSOCKET] = -1;
|
conn->sock[SECONDARYSOCKET] = CURL_SOCKET_BAD;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ftp->no_transfer)
|
if(ftp->no_transfer)
|
||||||
|
|
|
@ -486,7 +486,7 @@ CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles)
|
||||||
* possibly know if the connection is in a good shape or not now. */
|
* possibly know if the connection is in a good shape or not now. */
|
||||||
easy->easy_conn->bits.close = TRUE;
|
easy->easy_conn->bits.close = TRUE;
|
||||||
|
|
||||||
if(-1 !=easy->easy_conn->sock[SECONDARYSOCKET]) {
|
if(CURL_SOCKET_BAD != easy->easy_conn->sock[SECONDARYSOCKET]) {
|
||||||
/* if we failed anywhere, we must clean up the secondary socket if
|
/* if we failed anywhere, we must clean up the secondary socket if
|
||||||
it was used */
|
it was used */
|
||||||
sclose(easy->easy_conn->sock[SECONDARYSOCKET]);
|
sclose(easy->easy_conn->sock[SECONDARYSOCKET]);
|
||||||
|
|
|
@ -1091,12 +1091,12 @@ CURLcode Curl_telnet(struct connectdata *conn)
|
||||||
HANDLE stdin_handle;
|
HANDLE stdin_handle;
|
||||||
HANDLE objs[2];
|
HANDLE objs[2];
|
||||||
DWORD waitret;
|
DWORD waitret;
|
||||||
DWORD nread;
|
DWORD readfile_read;
|
||||||
#else
|
#else
|
||||||
fd_set readfd;
|
fd_set readfd;
|
||||||
fd_set keepfd;
|
fd_set keepfd;
|
||||||
ssize_t nread;
|
|
||||||
#endif
|
#endif
|
||||||
|
ssize_t nread;
|
||||||
bool keepon = TRUE;
|
bool keepon = TRUE;
|
||||||
char *buf = data->state.buffer;
|
char *buf = data->state.buffer;
|
||||||
struct TELNET *tn;
|
struct TELNET *tn;
|
||||||
|
@ -1203,10 +1203,11 @@ CURLcode Curl_telnet(struct connectdata *conn)
|
||||||
char *buffer = buf;
|
char *buffer = buf;
|
||||||
|
|
||||||
if(!ReadFile(stdin_handle, buf, sizeof(data->state.buffer),
|
if(!ReadFile(stdin_handle, buf, sizeof(data->state.buffer),
|
||||||
(LPDWORD)&nread, NULL)) {
|
&readfile_read, NULL)) {
|
||||||
keepon = FALSE;
|
keepon = FALSE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
nread = readfile_read;
|
||||||
|
|
||||||
while(nread--) {
|
while(nread--) {
|
||||||
outbuf[0] = *buffer++;
|
outbuf[0] = *buffer++;
|
||||||
|
|
|
@ -63,6 +63,7 @@ static int gettimeofday(struct timeval *tp, void *nothing)
|
||||||
tp->tv_sec = Sec;
|
tp->tv_sec = Sec;
|
||||||
tp->tv_usec = Usec;
|
tp->tv_usec = Usec;
|
||||||
#endif /* WITHOUT_MM_LIB */
|
#endif /* WITHOUT_MM_LIB */
|
||||||
|
(void)nothing;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#else /* WIN32 */
|
#else /* WIN32 */
|
||||||
|
|
|
@ -1312,13 +1312,13 @@ CURLcode Curl_readwrite_init(struct connectdata *conn)
|
||||||
if(conn->bits.getheader || !data->set.no_body) {
|
if(conn->bits.getheader || !data->set.no_body) {
|
||||||
|
|
||||||
FD_ZERO (&k->readfd); /* clear it */
|
FD_ZERO (&k->readfd); /* clear it */
|
||||||
if(conn->sockfd != -1) {
|
if(conn->sockfd != CURL_SOCKET_BAD) {
|
||||||
FD_SET (conn->sockfd, &k->readfd); /* read socket */
|
FD_SET (conn->sockfd, &k->readfd); /* read socket */
|
||||||
k->keepon |= KEEP_READ;
|
k->keepon |= KEEP_READ;
|
||||||
}
|
}
|
||||||
|
|
||||||
FD_ZERO (&k->writefd); /* clear it */
|
FD_ZERO (&k->writefd); /* clear it */
|
||||||
if(conn->writesockfd != -1) {
|
if(conn->writesockfd != CURL_SOCKET_BAD) {
|
||||||
/* HTTP 1.1 magic:
|
/* HTTP 1.1 magic:
|
||||||
|
|
||||||
Even if we require a 100-return code before uploading data, we might
|
Even if we require a 100-return code before uploading data, we might
|
||||||
|
@ -1408,7 +1408,7 @@ Transfer(struct connectdata *conn)
|
||||||
is different*/
|
is different*/
|
||||||
Curl_readwrite_init(conn);
|
Curl_readwrite_init(conn);
|
||||||
|
|
||||||
if((conn->sockfd == -1) && (conn->writesockfd == -1))
|
if((conn->sockfd == CURL_SOCKET_BAD) && (conn->writesockfd == CURL_SOCKET_BAD))
|
||||||
/* nothing to read, nothing to write, we're already OK! */
|
/* nothing to read, nothing to write, we're already OK! */
|
||||||
return CURLE_OK;
|
return CURLE_OK;
|
||||||
|
|
||||||
|
@ -1953,11 +1953,11 @@ CURLcode Curl_perform(struct SessionHandle *data)
|
||||||
* possibly know if the connection is in a good shape or not now. */
|
* possibly know if the connection is in a good shape or not now. */
|
||||||
conn->bits.close = TRUE;
|
conn->bits.close = TRUE;
|
||||||
|
|
||||||
if(-1 != conn->sock[SECONDARYSOCKET]) {
|
if(CURL_SOCKET_BAD != conn->sock[SECONDARYSOCKET]) {
|
||||||
/* if we failed anywhere, we must clean up the secondary socket if
|
/* if we failed anywhere, we must clean up the secondary socket if
|
||||||
it was used */
|
it was used */
|
||||||
sclose(conn->sock[SECONDARYSOCKET]);
|
sclose(conn->sock[SECONDARYSOCKET]);
|
||||||
conn->sock[SECONDARYSOCKET]=-1;
|
conn->sock[SECONDARYSOCKET] = CURL_SOCKET_BAD;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
10
lib/url.c
10
lib/url.c
|
@ -1341,9 +1341,9 @@ CURLcode Curl_disconnect(struct connectdata *conn)
|
||||||
Curl_SSL_Close(conn);
|
Curl_SSL_Close(conn);
|
||||||
|
|
||||||
/* close possibly still open sockets */
|
/* close possibly still open sockets */
|
||||||
if(-1 != conn->sock[SECONDARYSOCKET])
|
if(CURL_SOCKET_BAD != conn->sock[SECONDARYSOCKET])
|
||||||
sclose(conn->sock[SECONDARYSOCKET]);
|
sclose(conn->sock[SECONDARYSOCKET]);
|
||||||
if(-1 != conn->sock[FIRSTSOCKET])
|
if(CURL_SOCKET_BAD != conn->sock[FIRSTSOCKET])
|
||||||
sclose(conn->sock[FIRSTSOCKET]);
|
sclose(conn->sock[FIRSTSOCKET]);
|
||||||
|
|
||||||
Curl_safefree(conn->user);
|
Curl_safefree(conn->user);
|
||||||
|
@ -2022,8 +2022,8 @@ static CURLcode CreateConnection(struct SessionHandle *data,
|
||||||
|
|
||||||
/* and we setup a few fields in case we end up actually using this struct */
|
/* and we setup a few fields in case we end up actually using this struct */
|
||||||
conn->data = data; /* remember our daddy */
|
conn->data = data; /* remember our daddy */
|
||||||
conn->sock[FIRSTSOCKET] = -1; /* no file descriptor */
|
conn->sock[FIRSTSOCKET] = CURL_SOCKET_BAD; /* no file descriptor */
|
||||||
conn->sock[SECONDARYSOCKET] = -1; /* no file descriptor */
|
conn->sock[SECONDARYSOCKET] = CURL_SOCKET_BAD; /* no file descriptor */
|
||||||
conn->connectindex = -1; /* no index */
|
conn->connectindex = -1; /* no index */
|
||||||
conn->bits.httpproxy = (data->change.proxy && *data->change.proxy &&
|
conn->bits.httpproxy = (data->change.proxy && *data->change.proxy &&
|
||||||
(data->set.proxytype == CURLPROXY_HTTP))?
|
(data->set.proxytype == CURLPROXY_HTTP))?
|
||||||
|
@ -3164,7 +3164,7 @@ static CURLcode SetupConnection(struct connectdata *conn,
|
||||||
conn->bytecount = 0;
|
conn->bytecount = 0;
|
||||||
conn->headerbytecount = 0;
|
conn->headerbytecount = 0;
|
||||||
|
|
||||||
if(-1 == conn->sock[FIRSTSOCKET]) {
|
if(CURL_SOCKET_BAD == conn->sock[FIRSTSOCKET]) {
|
||||||
bool connected;
|
bool connected;
|
||||||
|
|
||||||
/* Connect only if not already connected! */
|
/* Connect only if not already connected! */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче