http: Post base64 decoding tidy up
authorSteve Holme <steve_holme@hotmail.com>
Sun, 3 Nov 2013 10:17:26 +0000 (10:17 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Sun, 3 Nov 2013 10:17:26 +0000 (10:17 +0000)
Renamed copy_header_value() to Curl_copy_header_value() as this
function is now non static.

Simplified proxy flag in Curl_http_input_auth() when calling
sub-functions.

Removed unnecessary white space removal when using negotiate as it had
been missed in commit cdccb422671aeb.

lib/http.c
lib/http.h
lib/http_negotiate.c
lib/http_negotiate_sspi.c
lib/http_proxy.c

index 3025beff1ac54154a6567d4af54cbaef5cd276f0..459b98bca692414f3eec9b54645260b8cc1a6668 100644 (file)
@@ -187,25 +187,25 @@ char *Curl_checkheaders(struct SessionHandle *data, const char *thisheader)
  * case of allocation failure. Returns an empty string if the header value
  * consists entirely of whitespace.
  */
-char *copy_header_value(const char *h)
+char *Curl_copy_header_value(const char *header)
 {
   const char *start;
   const char *end;
   char *value;
   size_t len;
 
-  DEBUGASSERT(h);
+  DEBUGASSERT(header);
 
   /* Find the end of the header name */
-  while(*h && (*h != ':'))
-    ++h;
+  while(*header && (*header != ':'))
+    ++header;
 
-  if(*h)
+  if(*header)
     /* Skip over colon */
-    ++h;
+    ++header;
 
   /* Find the first non-space letter */
-  start = h;
+  start = header;
   while(*start && ISSPACE(*start))
     start++;
 
@@ -224,7 +224,7 @@ char *copy_header_value(const char *h)
     end--;
 
   /* get length of the type */
-  len = end-start+1;
+  len = end - start + 1;
 
   value = malloc(len + 1);
   if(!value)
@@ -699,8 +699,7 @@ Curl_http_output_auth(struct connectdata *conn,
  * proxy CONNECT loop.
  */
 
-CURLcode Curl_http_input_auth(struct connectdata *conn,
-                              int httpcode,
+CURLcode Curl_http_input_auth(struct connectdata *conn, bool proxy,
                               const char *auth) /* the first non-space */
 {
   /*
@@ -711,7 +710,7 @@ CURLcode Curl_http_input_auth(struct connectdata *conn,
   unsigned long *availp;
   struct auth *authp;
 
-  if(httpcode == 407) {
+  if(proxy) {
     availp = &data->info.proxyauthavail;
     authp = &data->state.authproxy;
   }
@@ -753,7 +752,7 @@ CURLcode Curl_http_input_auth(struct connectdata *conn,
           data->state.authproblem = TRUE;
         }
         else {
-          neg = Curl_input_negotiate(conn, (bool)(httpcode == 407), auth);
+          neg = Curl_input_negotiate(conn, proxy, auth);
           if(neg == 0) {
             DEBUGASSERT(!data->req.newurl);
             data->req.newurl = strdup(data->change.url);
@@ -779,7 +778,7 @@ CURLcode Curl_http_input_auth(struct connectdata *conn,
            authp->picked == CURLAUTH_NTLM_WB) {
           /* NTLM authentication is picked and activated */
           CURLcode ntlm =
-            Curl_input_ntlm(conn, (httpcode == 407)?TRUE:FALSE, auth);
+            Curl_input_ntlm(conn, proxy, auth);
           if(CURLE_OK == ntlm) {
             data->state.authproblem = FALSE;
 #ifdef NTLM_WB_ENABLED
@@ -826,7 +825,7 @@ CURLcode Curl_http_input_auth(struct connectdata *conn,
              * authentication isn't activated yet, as we need to store the
              * incoming data from this header in case we are gonna use
              * Digest. */
-            dig = Curl_input_digest(conn, (httpcode == 407)?TRUE:FALSE, auth);
+            dig = Curl_input_digest(conn, proxy, auth);
 
             if(CURLDIGEST_FINE != dig) {
               infof(data, "Authentication problem. Ignoring this.\n");
@@ -1824,7 +1823,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
        custom Host: header if this is NOT a redirect, as setting Host: in the
        redirected request is being out on thin ice. Except if the host name
        is the same as the first one! */
-    char *cookiehost = copy_header_value(ptr);
+    char *cookiehost = Curl_copy_header_value(ptr);
     if(!cookiehost)
       return CURLE_OUT_OF_MEMORY;
     if(!*cookiehost)
@@ -3240,7 +3239,7 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
     }
     /* check for Content-Type: header lines to get the MIME-type */
     else if(checkprefix("Content-Type:", k->p)) {
-      char *contenttype = copy_header_value(k->p);
+      char *contenttype = Curl_copy_header_value(k->p);
       if(!contenttype)
         return CURLE_OUT_OF_MEMORY;
       if(!*contenttype)
@@ -3252,7 +3251,7 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
       }
     }
     else if(checkprefix("Server:", k->p)) {
-      char *server_name = copy_header_value(k->p);
+      char *server_name = Curl_copy_header_value(k->p);
 
       /* Turn off pipelining if the server version is blacklisted */
       if(conn->bundle && conn->bundle->server_supports_pipelining) {
@@ -3448,11 +3447,13 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
              (401 == k->httpcode)) ||
             (checkprefix("Proxy-authenticate:", k->p) &&
              (407 == k->httpcode))) {
-      char *auth = copy_header_value(k->p);
+
+      bool proxy = (k->httpcode == 407) ? TRUE : FALSE;
+      char *auth = Curl_copy_header_value(k->p);
       if(!auth)
         return CURLE_OUT_OF_MEMORY;
 
-      result = Curl_http_input_auth(conn, k->httpcode, auth);
+      result = Curl_http_input_auth(conn, proxy, auth);
 
       Curl_safefree(auth);
 
@@ -3463,7 +3464,7 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
             checkprefix("Location:", k->p) &&
             !data->req.location) {
       /* this is the URL that the server advises us to use instead */
-      char *location = copy_header_value(k->p);
+      char *location = Curl_copy_header_value(k->p);
       if(!location)
         return CURLE_OUT_OF_MEMORY;
       if(!*location)
index d74714d586924426692a3cd75e6410fc5d047707..82a7b50089f7feeda098f5fb6546bba82bed8fb9 100644 (file)
@@ -35,12 +35,12 @@ extern const struct Curl_handler Curl_handler_http;
 extern const struct Curl_handler Curl_handler_https;
 #endif
 
-/* Header specific function */
+/* Header specific functions */
 bool Curl_compareheader(const char *headerline,  /* line to check */
                         const char *header,   /* header keyword _with_ colon */
                         const char *content); /* content string to find */
 char *Curl_checkheaders(struct SessionHandle *data, const char *thisheader);
-char *copy_header_value(const char *h);
+char *Curl_copy_header_value(const char *header);
 
 /* ------------------------------------------------------------------------- */
 /*
@@ -82,8 +82,8 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn, char *datap,
 
 /* These functions are in http.c */
 void Curl_http_auth_stage(struct SessionHandle *data, int stage);
-CURLcode Curl_http_input_auth(struct connectdata *conn,
-                              int httpcode, const char *header);
+CURLcode Curl_http_input_auth(struct connectdata *conn, bool proxy,
+                              const char *auth);
 CURLcode Curl_http_auth_act(struct connectdata *conn);
 CURLcode Curl_http_perhapsrewind(struct connectdata *conn);
 
index 9b981b33271f2a243517158ea40a2618cc908d82..53df30e09a2983c5057cb69254969de3c86e95fc 100644 (file)
@@ -145,8 +145,6 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
   const char* protocol;
   CURLcode error;
 
-  while(*header && ISSPACE(*header))
-    header++;
   if(checkprefix("GSS-Negotiate", header)) {
     protocol = "GSS-Negotiate";
     gss = TRUE;
index 1381d5292d97d6ce63e009a467dbb629d0249f70..9842ac87a5f6e6eae50bb70fd01cc1df20e81baa 100644 (file)
@@ -98,9 +98,6 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
   const char* protocol;
   CURLcode error;
 
-  while(*header && ISSPACE(*header))
-    header++;
-
   if(checkprefix("GSS-Negotiate", header)) {
     protocol = "GSS-Negotiate";
     gss = TRUE;
index 97edc486ef046977d36b8510255dda6521e7ad1d..bf3457f6a4a994ea22b05660e36ea1aa43931a7a 100644 (file)
@@ -453,11 +453,12 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
                      (checkprefix("Proxy-authenticate:", line_start) &&
                       (407 == k->httpcode))) {
 
-                    char *auth = copy_header_value(line_start);
+                    bool proxy = (k->httpcode == 407) ? TRUE : FALSE;
+                    char *auth = Curl_copy_header_value(line_start);
                     if(!auth)
                       return CURLE_OUT_OF_MEMORY;
 
-                    result = Curl_http_input_auth(conn, k->httpcode, auth);
+                    result = Curl_http_input_auth(conn, proxy, auth);
 
                     Curl_safefree(auth);