olegk       2003/08/12 11:46:47

  Modified:    httpclient/src/java/org/apache/commons/httpclient
                        HttpMethodDirector.java
  Log:
  The patch addresses the problem with the proxy authentication realm reported by 
David Rowe <[EMAIL PROTECTED]>.
  
  HttpMethodDirector changed to correctly determine authentication realm
  
  Contributed by Oleg Kalnichevski
  
  Revision  Changes    Path
  1.2       +30 -24    
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodDirector.java
  
  Index: HttpMethodDirector.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodDirector.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- HttpMethodDirector.java   12 Aug 2003 02:35:17 -0000      1.1
  +++ HttpMethodDirector.java   12 Aug 2003 18:46:47 -0000      1.2
  @@ -510,14 +510,20 @@
                // handle authentication required
                Header[] challenges = null;
                Set realmsUsed = null;
  +        String host = null;
                switch (statusCode) {
                        case HttpStatus.SC_UNAUTHORIZED:
                                challenges = 
method.getResponseHeaders(HttpAuthenticator.WWW_AUTH);
                                realmsUsed = realms;
  +                host = conn.getVirtualHost();
  +                if (host == null) {
  +                    host = conn.getHost();
  +                }
                                break;
                        case HttpStatus.SC_PROXY_AUTHENTICATION_REQUIRED:
                   challenges = 
method.getResponseHeaders(HttpAuthenticator.PROXY_AUTH);
                                realmsUsed = proxyRealms;
  +                host = conn.getProxyHost();
                                break;
                }
                boolean authenticated = false;
  @@ -538,27 +544,27 @@
                                return true;
                        }
           
  -                     StringBuffer buffer = new StringBuffer();
  -                     buffer.append(conn.getHost());
  -                     int port = conn.getPort();
  -                     if (conn.getProtocol().getDefaultPort() != port) {
  -                             buffer.append(':');
  -                             buffer.append(port);
  -                     }
  -                     buffer.append('#');
  -                     buffer.append(authscheme.getID());
  -                     String realm = buffer.toString();
  +            StringBuffer buffer = new StringBuffer();
  +            buffer.append(host);
  +            buffer.append('#');
  +            buffer.append(authscheme.getID());
  +            String realm = buffer.toString();
   
  -                     if (realmsUsed.contains(realm)) {
  -                             if (LOG.isInfoEnabled()) {
  -                                     LOG.info("Already tried to authenticate to \""
  -                                                      + realm + "\" but still 
receiving "
  -                                                      + statusCode + ".");
  -                             }
  -                             return true;
  -                     } else {
  -                             realmsUsed.add(realm);
  -                     }
  +            if (realmsUsed.contains(realm)) {
  +                if (LOG.isInfoEnabled()) {
  +                    buffer = new StringBuffer();
  +                    buffer.append("Already tried to authenticate with '");
  +                    buffer.append(authscheme.getRealm());
  +                    buffer.append("' authentication realm at ");
  +                    buffer.append(host);
  +                    buffer.append(", but still receiving: ");
  +                    buffer.append(method.getStatusLine().toString());
  +                    LOG.info(buffer.toString());
  +                }
  +                return true;
  +            } else {
  +                realmsUsed.add(realm);
  +            }
   
                        try {
                                //remove preemptive header and reauthenticate
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to