summaryrefslogtreecommitdiff
path: root/lib/connect.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2004-09-30 21:01:23 +0000
committerDaniel Stenberg <daniel@haxx.se>2004-09-30 21:01:23 +0000
commitbe1cece69b2bc7b73c07166ec5e164fabdac1c95 (patch)
tree9191ac933a02caa4ab288e8b64ebd32e0d474f6b /lib/connect.c
parent45be6d6645ebc20d9fac83ba2b1c17327faced49 (diff)
downloadcurl-be1cece69b2bc7b73c07166ec5e164fabdac1c95.tar.gz
- Larry Campbell added CURLINFO_OS_ERRNO to curl_easy_getinfo() that allows an
app to retrieve the errno variable after a (connect) failure. It will make sense to provide this for more failures in a more generic way, but let's start like this.
Diffstat (limited to 'lib/connect.c')
-rw-r--r--lib/connect.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/connect.c b/lib/connect.c
index f6d10f60e..5e8c047bc 100644
--- a/lib/connect.c
+++ b/lib/connect.c
@@ -355,7 +355,8 @@ static CURLcode bindlocal(struct connectdata *conn,
}
if(!bindworked) {
- failf(data, "%s", Curl_strerror(conn, Curl_ourerrno()));
+ data->state.os_errno = Curl_ourerrno();
+ failf(data, "%s", Curl_strerror(conn, data->state.os_errno));
return CURLE_HTTP_PORT_FAILED;
}
@@ -508,12 +509,14 @@ CURLcode Curl_is_connected(struct connectdata *conn,
rc = waitconnect(sockfd, 0);
if(WAITCONN_CONNECTED == rc) {
- if (verifyconnect(sockfd, NULL)) {
+ int error;
+ if (verifyconnect(sockfd, &error)) {
/* we are connected, awesome! */
*connected = TRUE;
return CURLE_OK;
}
/* nope, not connected for real */
+ data->state.os_errno = error;
infof(data, "Connection failed\n");
if(trynextip(conn, sockindex, connected)) {
code = CURLE_COULDNT_CONNECT;
@@ -635,8 +638,10 @@ singleipconnect(struct connectdata *conn,
}
else if(WAITCONN_TIMEOUT == rc)
infof(data, "Timeout\n");
- else
+ else {
+ data->state.os_errno = error;
infof(data, "%s\n", Curl_strerror(conn, error));
+ }
/* connect failed or timed out */
sclose(sockfd);