* We now have the numerical IPv4-style x.y.z.w in the 'myhost' buffer
*/
rc = Curl_resolv(conn, myhost, 0, &h);
- if(rc == 1)
+ if(rc == CURLRESOLV_PENDING)
(void)Curl_wait_for_resolv(conn, &h);
if(h)
* or IP number
*/
rc = Curl_resolv(conn, data->set.device, 0, &h);
- if(rc == 1)
+ if(rc == CURLRESOLV_PENDING)
(void)Curl_wait_for_resolv(conn, &h);
if(h)
if((in == CURL_INADDR_NONE) &&
Curl_if2ip(data->set.ftpport, myhost, sizeof(myhost))) {
rc = Curl_resolv(conn, myhost, 0, &h);
- if(rc == 1)
+ if(rc == CURLRESOLV_PENDING)
rc = Curl_wait_for_resolv(conn, &h);
}
else {
size_t len = strlen(data->set.ftpport);
if(len>1) {
rc = Curl_resolv(conn, data->set.ftpport, 0, &h);
- if(rc == 1)
+ if(rc == CURLRESOLV_PENDING)
rc = Curl_wait_for_resolv(conn, &h);
}
if(h)
* now, instead we remake the lookup here and now!
*/
rc = Curl_resolv(conn, conn->proxyhost, conn->port, &addr);
- if(rc == 1)
+ if(rc == CURLRESOLV_PENDING)
rc = Curl_wait_for_resolv(conn, &addr);
connectport =
else {
/* normal, direct, ftp connection */
rc = Curl_resolv(conn, newhostp, newport, &addr);
- if(rc == 1)
+ if(rc == CURLRESOLV_PENDING)
rc = Curl_wait_for_resolv(conn, &addr);
if(!addr) {
*
* Return codes:
*
- * -1 = error, no pointer
- * 0 = OK, pointer provided
- * 1 = waiting for response, no pointer
+ * CURLRESOLV_ERROR (-1) = error, no pointer
+ * CURLRESOLV_RESOLVED (0) = OK, pointer provided
+ * CURLRESOLV_PENDING (1) = waiting for response, no pointer
*/
+
int Curl_resolv(struct connectdata *conn,
char *hostname,
int port,
CURLcode result;
/* default to failure */
- int rc = -1;
+ int rc = CURLRESOLV_ERROR;
*entry = NULL;
#ifdef HAVE_SIGSETJMP
if(!data->set.no_signal && sigsetjmp(curl_jmpenv, 1)) {
/* this is coming from a siglongjmp() */
failf(data, "name lookup timed out");
- return -1;
+ return CURLRESOLV_ERROR;
}
#endif
entry_id = create_hostcache_id(hostname, port, &entry_len);
/* If we can't create the entry id, fail */
if (!entry_id)
- return -1;
+ return CURLRESOLV_ERROR;
if(data->share)
Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE);
/* Check what IP specifics the app has requested and if we can provide it.
* If not, bail out. */
if(!Curl_ipvalid(data))
- return -1;
+ return CURLRESOLV_ERROR;
/* If Curl_getaddrinfo() returns NULL, 'wait' might be set to a non-zero
value indicating that we need to wait for the response to the resolve
/* First, check that we haven't received the info by now */
result = Curl_is_resolved(conn, &dns);
if(result) /* error detected */
- return -1;
+ return CURLRESOLV_ERROR;
if(dns)
- rc = 0; /* pointer provided */
+ rc = CURLRESOLV_RESOLVED; /* pointer provided */
else
- rc = 1; /* no info yet */
+ rc = CURLRESOLV_PENDING; /* no info yet */
}
}
else {
/* returned failure, bail out nicely */
Curl_freeaddrinfo(addr);
else
- rc = 0;
+ rc = CURLRESOLV_RESOLVED;
}
}
else {
dns->inuse++; /* we use it! */
- rc = 0;
+ rc = CURLRESOLV_RESOLVED;
}
*entry = dns;
* The returned data *MUST* be "unlocked" with Curl_resolv_unlock() after
* use, or we'll leak memory!
*/
-int Curl_resolv(struct connectdata *conn,
- char *hostname,
- int port,
- struct Curl_dns_entry **dnsentry);
+/* return codes */
+#define CURLRESOLV_ERROR -1
+#define CURLRESOLV_RESOLVED 0
+#define CURLRESOLV_PENDING 1
+int Curl_resolv(struct connectdata *conn, char *hostname,
+ int port, struct Curl_dns_entry **dnsentry);
/*
* Curl_ipvalid() checks what CURL_IPRESOLVE_* requirements that might've
#define CURLRES_SYNCH
#endif
+#ifndef USE_LIBIDN
+#define CURLRES_IDN
+#endif
+
/* Allocate enough memory to hold the full name information structs and
* everything. OSF1 is known to require at least 8872 bytes. The buffer
* required for storing all possible aliases and IP numbers is according to
Curl_addrinfo *hp=NULL;
int rc = Curl_resolv(conn, TRUE_HOSTNAME(conn), conn->remote_port, &dns);
- if(rc == -1)
+ if(rc == CURLRESOLV_ERROR)
return 1;
- if(rc == 1)
+ if(rc == CURLRESOLV_PENDING)
/* this requires that we're in "wait for resolve" state */
rc = Curl_wait_for_resolv(conn, &dns);
/* Resolve target host right on */
rc = Curl_resolv(conn, TRUE_HOSTNAME(conn), conn->port, &hostaddr);
- if(rc == 1)
+ if(rc == CURLRESOLV_PENDING)
*async = TRUE;
else if(!hostaddr) {
/* resolve proxy */
rc = Curl_resolv(conn, conn->proxyhost, conn->port, &hostaddr);
- if(rc == 1)
+ if(rc == CURLRESOLV_PENDING)
*async = TRUE;
else if(!hostaddr) {