This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 8.5.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit a7a8ea8ef61c61761cffc0322d9a3c567a847e16 Author: Mark Thomas <ma...@apache.org> AuthorDate: Tue Jul 30 15:19:11 2019 +0100 Align with master. Use FastDateFormat to parse date headers --- .../apache/catalina/filters/RemoteIpFilter.java | 33 +++------------------- 1 file changed, 4 insertions(+), 29 deletions(-) diff --git a/java/org/apache/catalina/filters/RemoteIpFilter.java b/java/org/apache/catalina/filters/RemoteIpFilter.java index a0dee98..f513ccd 100644 --- a/java/org/apache/catalina/filters/RemoteIpFilter.java +++ b/java/org/apache/catalina/filters/RemoteIpFilter.java @@ -17,18 +17,13 @@ package org.apache.catalina.filters; import java.io.IOException; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Collections; -import java.util.Date; import java.util.Enumeration; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.List; -import java.util.Locale; import java.util.Map; import java.util.regex.Pattern; @@ -49,6 +44,7 @@ import org.apache.catalina.connector.RequestFacade; import org.apache.catalina.servlet4preview.http.PushBuilder; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; +import org.apache.tomcat.util.http.FastHttpDateFormat; import org.apache.tomcat.util.res.StringManager; /** @@ -448,18 +444,6 @@ public class RemoteIpFilter implements Filter { public static class XForwardedRequest extends HttpServletRequestWrapper { - static final ThreadLocal<SimpleDateFormat[]> threadLocalDateFormats = new ThreadLocal<SimpleDateFormat[]>() { - @Override - protected SimpleDateFormat[] initialValue() { - return new SimpleDateFormat[] { - new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US), - new SimpleDateFormat("EEEEEE, dd-MMM-yy HH:mm:ss zzz", Locale.US), - new SimpleDateFormat("EEE MMMM d HH:mm:ss yyyy", Locale.US) - }; - - } - }; - protected final Map<String, List<String>> headers; protected int localPort; @@ -496,20 +480,11 @@ public class RemoteIpFilter implements Filter { if (value == null) { return -1; } - DateFormat[] dateFormats = threadLocalDateFormats.get(); - Date date = null; - for (int i = 0; ((i < dateFormats.length) && (date == null)); i++) { - DateFormat dateFormat = dateFormats[i]; - try { - date = dateFormat.parse(value); - } catch (ParseException ex) { - // Ignore - } - } - if (date == null) { + long date = FastHttpDateFormat.parseDate(value); + if (date == -1) { throw new IllegalArgumentException(value); } - return date.getTime(); + return date; } @Override --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org