aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES5
-rw-r--r--RELEASE-NOTES2
-rw-r--r--lib/hostip.c20
3 files changed, 21 insertions, 6 deletions
diff --git a/CHANGES b/CHANGES
index 7ddb3611c..2500119e0 100644
--- a/CHANGES
+++ b/CHANGES
@@ -7,6 +7,11 @@
Changelog
Daniel Stenberg (1 Sep 2009)
+- Peter Sylvester made a debug featuer for Curl_resolv() that now will force
+ libcurl to resolve 'localhost' whatever name you use in the URL *if* you set
+ the --interface option to (exactly) "LocalHost". This will enable us to
+ write tests for custom hosts names but still use a local host server.
+
- configure now tries to use pkg-config for a number of sub-dependencies even
when cross-compiling. The key to success is then you properly setup
PKG_CONFIG_PATH before invoking configure.
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 505755d03..bf7e094dd 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -36,6 +36,6 @@ This release would not have looked like this without help, code, reports and
advice from friends like these:
Karl Moerder, Kamil Dudka, Krister Johansen, Andre Guibert de Bruet,
- Michal Marek, Eric Wong, Guenter Knauf
+ Michal Marek, Eric Wong, Guenter Knauf, Peter Sylvester
Thanks! (and sorry if I forgot to mention someone)
diff --git a/lib/hostip.c b/lib/hostip.c
index 9f6069bff..2ccb201c8 100644
--- a/lib/hostip.c
+++ b/lib/hostip.c
@@ -391,6 +391,10 @@ Curl_cache_addr(struct SessionHandle *data,
* function is used. You MUST call Curl_resolv_unlock() later (when you're
* done using this struct) to decrease the counter again.
*
+ * In debug mode, we specifically test for an interface name "LocalHost"
+ * and resolve "localhost" instead as a means to permit test cases
+ * to connect to a local test server with any host name.
+ *
* Return codes:
*
* CURLRESOLV_ERROR (-1) = error, no pointer
@@ -455,7 +459,13 @@ int Curl_resolv(struct connectdata *conn,
/* If Curl_getaddrinfo() returns NULL, 'respwait' might be set to a
non-zero value indicating that we need to wait for the response to the
resolve call */
- addr = Curl_getaddrinfo(conn, hostname, port, &respwait);
+ addr = Curl_getaddrinfo(conn,
+#ifdef DEBUGBUILD
+ (data->set.str[STRING_DEVICE]
+ && !strcmp(data->set.str[STRING_DEVICE],
+ "LocalHost"))?"localhost":
+#endif
+ hostname, port, &respwait);
if(!addr) {
if(respwait) {
@@ -494,7 +504,7 @@ int Curl_resolv(struct connectdata *conn,
return rc;
}
-#ifdef USE_ALARM_TIMEOUT
+#ifdef USE_ALARM_TIMEOUT
/*
* This signal handler jumps back into the main libcurl code and continues
* execution. This effectively causes the remainder of the application to run
@@ -538,7 +548,7 @@ int Curl_resolv_timeout(struct connectdata *conn,
struct Curl_dns_entry **entry,
long timeoutms)
{
-#ifdef USE_ALARM_TIMEOUT
+#ifdef USE_ALARM_TIMEOUT
#ifdef HAVE_SIGACTION
struct sigaction keep_sigact; /* store the old struct here */
bool keep_copysig=FALSE; /* did copy it? */
@@ -556,7 +566,7 @@ int Curl_resolv_timeout(struct connectdata *conn,
*entry = NULL;
-#ifdef USE_ALARM_TIMEOUT
+#ifdef USE_ALARM_TIMEOUT
if (data->set.no_signal)
/* Ignore the timeout when signals are disabled */
timeout = 0;
@@ -619,7 +629,7 @@ int Curl_resolv_timeout(struct connectdata *conn,
*/
rc = Curl_resolv(conn, hostname, port, entry);
-#ifdef USE_ALARM_TIMEOUT
+#ifdef USE_ALARM_TIMEOUT
if (timeout > 0) {
#ifdef HAVE_SIGACTION