mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-21 18:09:20 +00:00
Fix for parsing of "If-Modified-Since" header
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@14679 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -30,9 +30,12 @@ import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.Writer;
|
||||
import java.net.SocketException;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
@@ -74,6 +77,11 @@ public class StreamContent extends AbstractWebScript
|
||||
// Logger
|
||||
private static final Log logger = LogFactory.getLog(StreamContent.class);
|
||||
|
||||
/**
|
||||
* format definied by RFC 822, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3
|
||||
*/
|
||||
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("EEE', 'dd' 'MMM' 'yyyy' 'HH:mm:ss' 'Z", Locale.US);
|
||||
|
||||
/** Services */
|
||||
protected PermissionService permissionService;
|
||||
protected NodeService nodeService;
|
||||
@@ -306,12 +314,24 @@ public class StreamContent extends AbstractWebScript
|
||||
|
||||
// check If-Modified-Since header and set Last-Modified header as appropriate
|
||||
Date modified = (Date)nodeService.getProperty(nodeRef, ContentModel.PROP_MODIFIED);
|
||||
long modifiedSince = -1;
|
||||
String modifiedSinceStr = req.getHeader("If-Modified-Since");
|
||||
if (modifiedSinceStr == null)
|
||||
{
|
||||
modifiedSinceStr = "-1";
|
||||
modifiedSince = -1;
|
||||
}
|
||||
long modifiedSince = new Long(modifiedSinceStr);
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
modifiedSince = dateFormat.parse(modifiedSinceStr).getTime();
|
||||
}
|
||||
catch (ParseException e)
|
||||
{
|
||||
if (logger.isInfoEnabled())
|
||||
logger.info("Browser sent badly-formatted If-Modified-Since header: " + modifiedSinceStr);
|
||||
}
|
||||
|
||||
if (modifiedSince > 0L)
|
||||
{
|
||||
// round the date to the ignore millisecond value which is not supplied by header
|
||||
@@ -322,6 +342,7 @@ public class StreamContent extends AbstractWebScript
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// get the content reader
|
||||
ContentReader reader = contentService.getReader(nodeRef, propertyQName);
|
||||
|
Reference in New Issue
Block a user