Author: markt
Date: Tue Jun 23 10:48:53 2009
New Revision: 787627
URL: http://svn.apache.org/viewvc?rev=787627&view=rev
Log:
Only copy the original parameters is debug is enabled. Otherwise, live with the
corruption but tell user how to get non-corrupted data
Modified:
tomcat/trunk/java/org/apache/tomcat/util/http/Parameters.java
Modified: tomcat/trunk/java/org/apache/tomcat/util/http/Parameters.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/Parameters.java?rev=787627&r1=787626&r2=787627&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/http/Parameters.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/http/Parameters.java Tue Jun 23
10:48:53 2009
@@ -398,14 +398,18 @@
}
tmpName.setBytes( bytes, nameStart, nameEnd-nameStart );
tmpValue.setBytes( bytes, valStart, valEnd-valStart );
- try {
- // Take copies as if anything goes wrong originals will be
- // corrupted. This means original values can be logged
- origName.append(bytes, nameStart, nameEnd-nameStart);
- origValue.append(bytes, valStart, valEnd-valStart);
- } catch (IOException ioe) {
- // Should never happen...
- log.error("Error copying parameters", ioe);
+
+ // Take copies as if anything goes wrong originals will be
+ // corrupted. This means original values can be logged.
+ // For performance - only done for debug
+ if (log.isDebugEnabled()) {
+ try {
+ origName.append(bytes, nameStart, nameEnd-nameStart);
+ origValue.append(bytes, valStart, valEnd-valStart);
+ } catch (IOException ioe) {
+ // Should never happen...
+ log.error("Error copying parameters", ioe);
+ }
}
try {
@@ -414,21 +418,31 @@
StringBuilder msg =
new StringBuilder("Parameters: Character decoding
failed.");
msg.append(" Parameter '");
- msg.append(origName.toString());
- msg.append("' with value '");
- msg.append(origValue.toString());
- msg.append("' has been ignored.");
if (log.isDebugEnabled()) {
+ msg.append(origName.toString());
+ msg.append("' with value '");
+ msg.append(origValue.toString());
+ msg.append("' has been ignored.");
log.debug(msg, e);
} else {
+ msg.append(tmpName.toString());
+ msg.append("' with value '");
+ msg.append(tmpValue.toString());
+ msg.append("' has been ignored. Note that the name and ");
+ msg.append("value quoted here may corrupted due to the ");
+ msg.append("failed decoding. Use debug level logging to ");
+ msg.append("see the original, non-corrupted values.");
log.warn(msg);
}
}
tmpName.recycle();
tmpValue.recycle();
- origName.recycle();
- origValue.recycle();
+ // Only recycle copies if we used them
+ if (log.isDebugEnabled()) {
+ origName.recycle();
+ origValue.recycle();
+ }
} while( pos<end );
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]