tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject [Bug 56692] request.getParameterNames(); returns empty Enumerations in Valve if servlet never call request.getParameterNames()
Date Sun, 06 Jul 2014 02:59:16 GMT
https://issues.apache.org/bugzilla/show_bug.cgi?id=56692

--- Comment #8 from Daniel Qian <chanjarster@gmail.com> ---
Thanks for explan.

Does that mean that the request parameters never got the chance to be parsed,
so the Request in valve can not got the parameters ?

And I have another question: How can I set logger to DEBUG level when I run
Tomcat test case ? I'm writing a custom Valve, if you tell me it will be very
helpful. Thanks in advance.


(In reply to Konstantin Kolinko from comment #7)
> Technically, the following happens:
> 
> Debugging Bug56692.java (Attachment 31792 [details]) with the current Tomcat
> 8 trunk @1608001
> 
> (1) InputBuffer is marked as closed.
> Stack trace from debugger:
> 
> 	InputBuffer.close() line: 232	
> 	OutputBuffer.close() line: 300	
> 	Response.finishResponse() line: 423	
> 	CoyoteAdapter.service(Request, Response) line: 567	
> 
> (2) Reading request body fails with new
> IOException(sm.getString("inputBuffer.streamClosed"));
> Stack trace from debugger:
> 
> 	InputBuffer.read(byte[], int, int) line: 360	
> 	CoyoteInputStream.read(byte[], int, int) line: 190	
> 	Request.readPostBody(byte[], int) line: 3035	
> 	Request.parseParameters() line: 2984	
> 	Request.getParameterNames() line: 1128	
> 	Bug56692$BugValve.log(Request, Response, long) line: 65	
> 	AccessLogAdapter.log(Request, Response, long) line: 51	
> 	StandardHost(ContainerBase).logAccess(Request, Response, long, boolean)
> line: 1042	
> 	StandardContext(ContainerBase).logAccess(Request, Response, long, boolean)
> line: 1049	
> 	CoyoteAdapter.service(Request, Response) line: 574	
> 
> So technically if one delays closing of InputBuffer into some separate
> method, then this behaviour might be possible.
> 
> Caveats:
> 1. Closing the InputBuffer is commented in OutputBuffer.close() as the way
> to prevent errors with AJP protocol (bug 50189)
> 
> 2. The time needed to parse the body won't be included into values of %D and
> %T (Time taken to process the request) that are already calculated when
> AccessLog.log() is invoked.
> 
> 3. ExtendedAccessLogValve has support for logging request parameters with
> "x-P(XXX)". It may be worth documenting its limitations. [1]
> 
> [1]
> http://tomcat.apache.org/tomcat-8.0-doc/config/valve.html#Access_Log_Valve

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Mime
View raw message