redirect DAV access caused Response error

Description

Since SAK-22059 change, DAV access is redirect if the browser type is of webdav.nonDavUserAgent setting (default to be Mozilla, Opera or Blackberry)

Here is the relavent code inside doGet() call:

for (String agent: nonDavUserAgent) {
if (header.toUpperCase().contains(agent.toUpperCase())) {
if (M_log.isInfoEnabled()) M_log.info("Redirecting DAV access because this is a browser." + header);
resp.sendRedirect("/access/content" + adjustId(path));
}
}

doContent(path, req, resp);

It looks like the doGet should exit after the sendRedirect. We have seen errors like the following in CTools now related to the redirect:

2013-01-02 10:48:19,587 [ajp-apr-127.0.0.1-8009-exec-15] INFO org.sakaiproject.dav.DavServlet - Redirecting DAV access because this is a browser.Mozilla/3.0 (compatible; Acrobat
Annots 8.0)
2013-01-02 10:48:19,598 [ajp-apr-127.0.0.1-8009-exec-15] WARN org.sakaiproject.util.RequestFilter -
java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:467)
at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:129)
at org.sakaiproject.dav.DavServlet.doContent(DavServlet.java:1776)
at org.sakaiproject.dav.DavServlet.doGet(DavServlet.java:1590)
at org.sakaiproject.dav.DavServlet.doDispatch(DavServlet.java:1147)
at org.sakaiproject.dav.DavServlet.service(DavServlet.java:1078)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:695)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:197)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1822)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

Attachments

1
  • 29 Jan 2014, 03:07 PM

Activity

Sam Ottenhoff June 27, 2014 at 3:12 PM

2.9.x r310473

Hudson CI Server May 12, 2014 at 1:34 PM

Integrated in sakai-10-java-1.7 #62 (See http://builds.sakaiproject.org:8080/job/sakai-10-java-1.7/62/)

Result = UNSTABLE

Zhen Qian April 14, 2014 at 2:11 PM

I have updated the test plan and verified the fix is working.

Neal Caidin March 29, 2014 at 10:22 AM

I tried to reproduce the problem locally on Sakai 10.0-qa05, but I was not able to. This means I don't know how to verify that a fix was made.

This is what I've tried.

1) Taking the WebDav URL and accessing it directly in a browser (I tried Mac Chrome and FF) , downloading a file, and checking catalina.out.

2) Tried Cyberduck with WebDav. Worked fine, no message in catalina.out

Steps to reproduce the bug on QA05 would be appreciated, then I could verify that the fix works in trunk.

Neal Caidin March 20, 2014 at 3:29 PM

How to test?

Fixed

Details

Priority

Affects versions

Components

Assignee

Reporter

Created January 2, 2013 at 1:27 PM
Updated October 21, 2014 at 8:03 AM
Resolved February 24, 2014 at 11:00 AM

Flag notifications