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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]