Commit 1da3d402 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

convert test case 540 to use a custom Host: header as well

parent 1da3192d
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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
Host: test.remote.server.com
Pragma: no-cache
Accept: */*
Proxy-Connection: Keep-Alive
Host: custom.set.host.name

GET http://test.remote.server.com/path/540 HTTP/1.1
Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/540", response="ca507dcf189196b6a5374d3233042261"
Host: test.remote.server.com
Pragma: no-cache
Accept: */*
Proxy-Connection: Keep-Alive
Host: custom.set.host.name

GET http://test.remote.server.com/path/540 HTTP/1.1
Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/540", response="ca507dcf189196b6a5374d3233042261"
Host: test.remote.server.com
Pragma: no-cache
Accept: */*
Proxy-Connection: Keep-Alive
Host: custom.set.host.name

</protocol>
</verify>
+22 −5
Original line number Diff line number Diff line
@@ -13,14 +13,17 @@
 * 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;
}