You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ol...@apache.org on 2004/01/21 22:10:44 UTC

cvs commit: jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/auth NTLMScheme.java

olegk       2004/01/21 13:10:44

  Modified:    httpclient/src/java/org/apache/commons/httpclient/auth
                        NTLMScheme.java
  Log:
  Fixes the problem with NTLM authentication scheme failing to properly handle authentication failures caused by invalid credentials which results in an infinite loop in HttpMethodDirector
  
  Contributed by Oleg Kalnichevski
  
  Revision  Changes    Path
  1.17      +10 -5     jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/auth/NTLMScheme.java
  
  Index: NTLMScheme.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/auth/NTLMScheme.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- NTLMScheme.java	14 Jan 2004 20:48:43 -0000	1.16
  +++ NTLMScheme.java	21 Jan 2004 21:10:44 -0000	1.17
  @@ -95,6 +95,7 @@
       private static final int TYPE1_MSG_GENERATED = 2;
       private static final int TYPE2_MSG_RECEIVED  = 3;
       private static final int TYPE3_MSG_GENERATED = 4;
  +    private static final int FAILED              = Integer.MAX_VALUE;
   
       /** Authentication process state */
       private int state;
  @@ -140,7 +141,11 @@
               this.state = TYPE2_MSG_RECEIVED;
           } else {
               this.ntlmchallenge = "";
  -            this.state = INITIATED;
  +            if (this.state == UNINITIATED) {
  +                this.state = INITIATED;
  +            } else {
  +                this.state = FAILED;
  +            }
           }
       }
   
  @@ -151,7 +156,7 @@
        *   <tt>false</tt> otherwise.
        */
       public boolean isComplete() {
  -        return this.state == TYPE3_MSG_GENERATED;
  +        return this.state == TYPE3_MSG_GENERATED || this.state == FAILED;
       }
   
       /**
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org