You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bi...@apache.org on 2003/07/12 10:35:39 UTC
cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/modules/generators StaticInterceptor.java
billbarker 2003/07/12 01:35:39
Modified: src/share/org/apache/tomcat/modules/generators
StaticInterceptor.java
Log:
Add support to the "Default Servlet" for the HTTP/1.1 methods "OPTIONS" and "TRACE"
Fix for Bug #21454 (which was technically INVALID, until the CoyoteConnetor allowed for HTTP/1.1 requests).
Revision Changes Path
1.27 +33 -1 jakarta-tomcat/src/share/org/apache/tomcat/modules/generators/StaticInterceptor.java
Index: StaticInterceptor.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/generators/StaticInterceptor.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- StaticInterceptor.java 26 Jul 2002 04:40:15 -0000 1.26
+++ StaticInterceptor.java 12 Jul 2003 08:35:39 -0000 1.27
@@ -174,6 +174,13 @@
String pathInfo=req.servletPath().toString();
if( pathInfo==null ) pathInfo="";
+ if( debug > 0 ) log("Method: " + req.method());
+ if(req.method().equalsIgnoreCase("OPTIONS") ||
+ req.method().equalsIgnoreCase("TRACE")) {
+ req.setHandler( ctx.getServletByName( "tomcat.fileHandler"));
+ return 0;
+ }
+
String absPath=FileUtil.safePath( ctx.getAbsolutePath(),
pathInfo);
@@ -409,12 +416,18 @@
public void doService(Request req, Response res)
throws Exception
{
+ if(req.method().equalsIgnoreCase("OPTIONS")) {
+ doOptions(req, res);
+ return;
+ } else if(req.method().equalsIgnoreCase("TRACE")) {
+ doTrace(req, res);
+ return;
+ }
// if we are in include, with req==original request
// - just use the current sub-request
Request subReq=req;
if(req.getChild()!=null)
subReq=req.getChild();
-
Context ctx=subReq.getContext();
// Use "javax.servlet.include.servlet_path" for path if defined.
// ErrorHandler places the path here when invoking an error page.
@@ -491,6 +504,25 @@
MimeHeaders headers=res.getMimeHeaders();
headers.setValue( name ).setTime( value );
}
+ }
+ void doOptions(Request req, Response res)
+ throws IOException {
+ res.addHeader("Allow","HEAD, GET, POST, OPTIONS, TRACE");
+ }
+ void doTrace(Request req, Response res)
+ throws IOException {
+ String CRLF = "\r\n";
+ res.setContentType("message/http");
+ StringBuffer resp = new StringBuffer();
+ Enumeration headers = req.getHeaderNames();
+ while( headers.hasMoreElements() ) {
+ String hName = (String)headers.nextElement();
+ String hValue = (String)req.getHeader(hName);
+ resp.append(CRLF).append(hName).append(": ").append(hValue);
+ }
+ res.setContentLength(resp.length());
+ Writer out = res.getBuffer();
+ out.write(resp.toString());
}
/** All path checks that were part of DefaultServlet
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org