convert test case 540 to use a custom Host: header as well
authorDaniel Stenberg <daniel@haxx.se>
Sun, 15 Jul 2007 21:00:26 +0000 (21:00 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Sun, 15 Jul 2007 21:00:26 +0000 (21:00 +0000)
tests/data/test540
tests/libtest/lib540.c

index aa62ca0..f82b240 100644 (file)
@@ -52,7 +52,7 @@ crypto
 HTTP proxy auth Digest multi API re-using connection
  </name>
  <command>
-http://test.remote.server.com/path/540 http://%HOSTIP:%HTTPPORT silly:person
+http://test.remote.server.com/path/540 http://%HOSTIP:%HTTPPORT silly:person custom.set.host.name
 </command>
 </client>
 
@@ -63,24 +63,24 @@ http://test.remote.server.com/path/540 http://%HOSTIP:%HTTPPORT silly:person
 </strip>
 <protocol>
 GET http://test.remote.server.com/path/540 HTTP/1.1\r
-Host: test.remote.server.com\r
 Pragma: no-cache\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
+Host: custom.set.host.name\r
 \r
 GET http://test.remote.server.com/path/540 HTTP/1.1\r
 Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/540", response="ca507dcf189196b6a5374d3233042261"\r
-Host: test.remote.server.com\r
 Pragma: no-cache\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
+Host: custom.set.host.name\r
 \r
 GET http://test.remote.server.com/path/540 HTTP/1.1\r
 Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/540", response="ca507dcf189196b6a5374d3233042261"\r
-Host: test.remote.server.com\r
 Pragma: no-cache\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
+Host: custom.set.host.name\r
 \r
 </protocol>
 </verify>
index 4b8e141..4d22eb5 100644 (file)
  * argv1 = URL
  * argv2 = proxy
  * argv3 = proxyuser:password
+ * argv4 = host name to use for the custom Host: header
  */
 
 #include "test.h"
 
 #define PROXY arg2
 #define PROXYUSERPWD arg3
+#define HOST test_argv[4]
 
-static void init(CURLM *cm, const char* url, const char* userpwd)
+static void init(CURLM *cm, const char* url, const char* userpwd,
+                struct curl_slist *headers)
 {
   CURL *eh = curl_easy_init();
 
@@ -30,11 +33,13 @@ static void init(CURLM *cm, const char* url, const char* userpwd)
   curl_easy_setopt(eh, CURLOPT_PROXYAUTH, CURLAUTH_ANY);
   curl_easy_setopt(eh, CURLOPT_VERBOSE, 1);
   curl_easy_setopt(eh, CURLOPT_HEADER, 1);
+  curl_easy_setopt(eh, CURLOPT_HTTPHEADER, headers); /* custom Host: */
 
   curl_multi_add_handle(cm, eh);
 }
 
-static int loop(CURLM *cm, const char* url, const char* userpwd)
+static int loop(CURLM *cm, const char* url, const char* userpwd,
+                struct curl_slist *headers)
 {
   CURLMsg *msg;
   long L;
@@ -42,7 +47,7 @@ static int loop(CURLM *cm, const char* url, const char* userpwd)
   fd_set R, W, E;
   struct timeval T;
 
-  init(cm, url, userpwd);
+  init(cm, url, userpwd, headers);
 
   while (U) {
     while (CURLM_CALL_MULTI_PERFORM == curl_multi_perform(cm, &U));
@@ -102,18 +107,30 @@ static int loop(CURLM *cm, const char* url, const char* userpwd)
 int test(char *URL)
 {
   CURLM *cm;
+  struct curl_slist *headers = NULL;
+  char buffer[246]; /* naively fixed-size */
+
+  if(test_argc < 4)
+    return 99;
+
+  sprintf(buffer, "Host: %s", HOST);
+
+  /* now add a custom Host: header */
+  headers = curl_slist_append(headers, buffer);
 
   curl_global_init(CURL_GLOBAL_ALL);
 
   cm = curl_multi_init();
-  loop(cm, URL, PROXYUSERPWD);
+  loop(cm, URL, PROXYUSERPWD, headers);
 
   fprintf(stderr, "lib540: now we do the request again\n");
-  loop(cm, URL, PROXYUSERPWD);
+  loop(cm, URL, PROXYUSERPWD, headers);
 
   curl_multi_cleanup(cm);
 
   curl_global_cleanup();
 
+  curl_slist_free_all(headers);
+
   return EXIT_SUCCESS;
 }