On Wed, May 04, 2016 at 01:42:39PM +0100, Frederico Costa wrote:
> Hi,
>
> Thanks for the reply.
>
> here is the debug output from 4.7.1, i used debug 3 command:

Please try this patch. As a workaround you can also try to specify user
name (and possibly password) in the URL:

   open https://u...@www.mufley.com
   open https://user:p...@www.mufley.com

--
   Alexander.
diff --git a/src/Http.cc b/src/Http.cc
index c4d2163..fadc98c 100644
--- a/src/Http.cc
+++ b/src/Http.cc
@@ -469,7 +469,7 @@ void Http::SendAuth()
       SendBasicAuth("Authorization",user,pass);
       return;
    }
-   SendAuth(HttpAuth::WWW,user,last_uri);
+   SendAuth(HttpAuth::WWW,user?user:auth_user,last_uri);
 }
 void Http::SendCacheControl()
 {
@@ -1082,22 +1082,10 @@ void Http::HandleHeaderLine(const char *name,const char 
*value)
    case_hh("WWW-Authenticate",'W') {
       if(status_code!=H_Unauthorized)
         return;
-      const char *user=this->user;
-      const char *pass=this->pass;
-      if(!user || !pass) {
-        // try auth info from http:authorization setting
-        const char *auth_c=Query("authorization",hostname);
-         if(auth_c && *auth_c) {
-           char *auth=alloca_strdup(auth_c);
-           char *colon=strchr(auth,':');
-           if(colon) {
-              *colon=0;
-              user=auth;
-              pass=colon+1;
-           }
-        }
-      }
-      NewAuth(value,HttpAuth::WWW,user,pass);
+      if(user && pass)
+        NewAuth(value,HttpAuth::WWW,user,pass);
+      else
+        NewAuth(value,HttpAuth::WWW,auth_user,auth_pass);
       return;
    }
    case_hh("Proxy-Authenticate",'P') {
@@ -2313,6 +2301,20 @@ void Http::Reconfig(const char *name)
    if(!QueryBool("use-allprop",c))
       allprop="";
    allprop_len=strlen(allprop);
+
+   if(!user || !pass) {
+      // get auth info from http:authorization setting
+      const char *auth_c=Query("authorization",hostname);
+      if(auth_c && *auth_c) {
+        char *auth=alloca_strdup(auth_c);
+        char *colon=strchr(auth,':');
+        if(colon) {
+           *colon=0;
+           auth_user.set(auth);
+           auth_pass.set(colon+1);
+        }
+      }
+   }
 }
 
 bool Http::SameSiteAs(const FileAccess *fa) const
diff --git a/src/Http.h b/src/Http.h
index bea3b4d..c8a7c8e 100644
--- a/src/Http.h
+++ b/src/Http.h
@@ -169,6 +169,9 @@ class Http : public NetAccess
    void NewAuth(const char *hdr,HttpAuth::target_t target,const char 
*user,const char *pass);
    void SendAuth(HttpAuth::target_t target,const char *user,const char *uri);
 
+   xstring_c auth_user;
+   xstring_c auth_pass;
+
    bool use_propfind_now;
    const char *allprop;
    int allprop_len;
_______________________________________________
lftp mailing list
lftp@uniyar.ac.ru
http://univ.uniyar.ac.ru/mailman/listinfo/lftp

Reply via email to