When basic is the only auth wanted (which it is by default), the auth phase
authorDaniel Stenberg <daniel@haxx.se>
Tue, 25 Nov 2003 09:05:15 +0000 (09:05 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 25 Nov 2003 09:05:15 +0000 (09:05 +0000)
is always considered done immediately as Basic needs to extra passes.

This fix corrects bug report #848371.

lib/http.c

index d5c8cf6..9389f5b 100644 (file)
@@ -227,13 +227,15 @@ CURLcode http_auth_headers(struct connectdata *conn,
       }
       else
 #endif
-      if((data->state.authwant == CURLAUTH_BASIC) && /* Basic */
-         conn->bits.proxy_user_passwd &&
-         !checkheaders(data, "Proxy-authorization:")) {
-        auth=(char *)"Basic";
-        result = Curl_output_basic_proxy(conn);
-        if(result)
-          return result;
+      if(data->state.authwant == CURLAUTH_BASIC) {
+        /* Basic */
+        if(conn->bits.proxy_user_passwd &&
+           !checkheaders(data, "Proxy-authorization:")) {
+          auth=(char *)"Basic";
+          result = Curl_output_basic_proxy(conn);
+          if(result)
+            return result;
+        }
         *ready = TRUE;
         /* Switch to web authentication after proxy authentication is done */
         Curl_http_auth_stage(data, 401);
@@ -276,13 +278,15 @@ CURLcode http_auth_headers(struct connectdata *conn,
             return result;
           *ready = TRUE;
         }
-        else if((data->state.authwant == CURLAUTH_BASIC) && /* Basic */
-                conn->bits.user_passwd &&
-                !checkheaders(data, "Authorization:")) {
-          auth=(char *)"Basic";
-          result = Curl_output_basic(conn);
-          if(result)
-            return result;
+        else if(data->state.authwant == CURLAUTH_BASIC) {/* Basic */
+          if(conn->bits.user_passwd &&
+             !checkheaders(data, "Authorization:")) {
+            auth=(char *)"Basic";
+            result = Curl_output_basic(conn);
+            if(result)
+              return result;
+          }
+          /* basic is always ready */
           *ready = TRUE;
         }
       }