On Sunday, September 07, 2003 8:47 AM, Remy Maucherat [SMTP:[EMAIL PROTECTED]
wrote:
> Remy Maucherat wrote:
>
> I've just committed a very simple implementation of this (without the
> extra queryStringEncoding field, although this is not hard to add).
> Comments ?
>
> Remy
Thanks for your help with this. I have run through a simple UTF-8 test case and
the problem as reported in bug 22666 is still present. I have tracked down what
I believe to be the root cause to another part of the Parameters class. I have
developed a patch for TC-5 below. I also think that the re-written try block in
your patch for the Parameters class can be reverted as it doesn't appear to
have any affect for UTF-8 query parameters.
Mark
PS I am off on holiday for a few days. I there is any further work remaining on
this, I will do it on my return.
Index: catalina/src/share/org/apache/coyote/tomcat5/CoyoteRequest.java
===================================================================
RCS file: /home/cvspublic/jakarta-tomcat-catalina/catalina/src/share/org/apa
che/coyote/tomcat5/CoyoteRequest.java,v
retrieving revision 1.15
diff -u -r1.15 CoyoteRequest.java
--- catalina/src/share/org/apache/coyote/tomcat5/CoyoteRequest.java 31 Aug 2003
21:08:56 -0000 1.15
+++ catalina/src/share/org/apache/coyote/tomcat5/CoyoteRequest.java 7 Sep 2003
14:10:33 -0000
@@ -2316,7 +2316,7 @@
formData = new byte[len];
}
readPostBody(formData, len);
- parameters.processParameters(formData, 0, len);
+ parameters.processParameters(formData, 0, len, false);
} catch (Throwable t) {
; // Ignore
}
Index: util/java/org/apache/tomcat/util/http/Parameters.java
===================================================================
RCS file:
/home/cvspublic/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/h
ttp/Parameters.java,v
retrieving revision 1.11
diff -u -r1.11 Parameters.java
--- util/java/org/apache/tomcat/util/http/Parameters.java 7 Sep 2003 07:37:12
-0000 1.11
+++ util/java/org/apache/tomcat/util/http/Parameters.java 7 Sep 2003 14:11:43
-0000
@@ -392,7 +392,7 @@
CharChunk tmpNameC=new CharChunk(1024);
CharChunk tmpValueC=new CharChunk(1024);
- public void processParameters( byte bytes[], int start, int len ) {
+ public void processParameters( byte bytes[], int start, int len, boolean
query ) {
int end=start+len;
int pos=start;
@@ -434,8 +434,14 @@
}
tmpName.setBytes( bytes, nameStart, nameEnd-nameStart );
tmpValue.setBytes( bytes, valStart, valEnd-valStart );
- tmpName.setEncoding( encoding );
- tmpValue.setEncoding( encoding );
+
+ if (query) {
+ tmpName.setEncoding( queryStringEncoding );
+ tmpValue.setEncoding( queryStringEncoding );
+ } else {
+ tmpName.setEncoding( encoding );
+ tmpValue.setEncoding( encoding );
+ }
try {
if( debug > 0 )
@@ -533,13 +539,13 @@
if( data.getType() == MessageBytes.T_BYTES ) {
ByteChunk bc=data.getByteChunk();
processParameters( bc.getBytes(), bc.getOffset(),
- bc.getLength());
+ bc.getLength(), true);
} else {
if (data.getType()!= MessageBytes.T_CHARS )
data.toChars();
CharChunk cc=data.getCharChunk();
processParameters( cc.getChars(), cc.getOffset(),
- cc.getLength());
+ cc.getLength() );
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]