tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From billbar...@apache.org
Subject cvs commit: jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/http MimeHeaders.java
Date Fri, 25 Mar 2005 03:53:25 GMT
billbarker    2005/03/24 19:53:25

  Modified:    util/java/org/apache/tomcat/util/http MimeHeaders.java
  Log:
  Make setValue guarantee that the header is unique (that's how it's being used anyway).
  
  Fix for Bug #34113
  
  Revision  Changes    Path
  1.7       +30 -18    jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/http/MimeHeaders.java
  
  Index: MimeHeaders.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/http/MimeHeaders.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- MimeHeaders.java	24 Feb 2004 08:50:04 -0000	1.6
  +++ MimeHeaders.java	25 Mar 2005 03:53:25 -0000	1.7
  @@ -262,13 +262,19 @@
   	if this .
       */
       public MessageBytes setValue( String name ) {
  - 	MessageBytes value=getValue(name);
  -	if( value == null ) {
  -	    MimeHeaderField mh = createHeader();
  -	    mh.getName().setString(name);
  -	    value=mh.getValue();
  -	}
  -	return value;
  +        for ( int i = 0; i < count; i++ ) {
  +            if(headers[i].getName().equalsIgnoreCase(name)) {
  +                for ( int j=i+1; j < count; j++ ) {
  +                    if(headers[j].getName().equalsIgnoreCase(name)) {
  +                        removeHeader(j--);
  +                    }
  +                }
  +                return headers[i].getValue();
  +            }
  +        }
  +        MimeHeaderField mh = createHeader();
  +        mh.getName().setString(name);
  +        return mh.getValue();
       }
   
       //-------------------- Getting headers --------------------
  @@ -304,19 +310,25 @@
           // warning: rather sticky code; heavily tuned
   
           for (int i = 0; i < count; i++) {
  -	    if (headers[i].getName().equalsIgnoreCase(name)) {
  -	        // reset and swap with last header
  -	        MimeHeaderField mh = headers[i];
  -
  -		mh.recycle();
  -		headers[i] = headers[count - 1];
  -		headers[count - 1] = mh;
  +            if (headers[i].getName().equalsIgnoreCase(name)) {
  +                removeHeader(i--);
  +            }
  +        }
  +    }
   
  -		count--;
  -		i--;
  -	    }
  -	}
  +    /**
  +     * reset and swap with last header
  +     * @param idx the index of the header to remove.
  +     */
  +    private void removeHeader(int idx) {
  +        MimeHeaderField mh = headers[idx];
  +        
  +        mh.recycle();
  +        headers[idx] = headers[count - 1];
  +        headers[count - 1] = mh;
  +        count--;
       }
  +
   }
   
   /** Enumerate the distinct header names.
  
  
  

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


Mime
View raw message