Author: alexlehm
Date: 2007-11-06 23:52:14 +0000 (Tue, 06 Nov 2007)
New Revision: 15701

Modified:
   trunk/apps/Freemail/src/freemail/MailHeaderFilter.java
Log:
fix sdf format to use proper locale and gmt timezone,
this fixes the following bugs:
https://bugs.freenetproject.org/view.php?id=1762
(rewriting the date header to gmt doesn't work)
https://bugs.freenetproject.org/view.php?id=1505
(Exception: "couldn't parse date" when sending mail)

Modified: trunk/apps/Freemail/src/freemail/MailHeaderFilter.java
===================================================================
--- trunk/apps/Freemail/src/freemail/MailHeaderFilter.java      2007-11-06 
01:04:49 UTC (rev 15700)
+++ trunk/apps/Freemail/src/freemail/MailHeaderFilter.java      2007-11-06 
23:52:14 UTC (rev 15701)
@@ -32,8 +32,8 @@
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.TimeZone;
-import java.util.Calendar;
 import java.text.ParseException;
+import java.util.Locale;

 class MailHeaderFilter {
        private final BufferedReader reader;
@@ -41,12 +41,14 @@
        private boolean foundEnd;
        private static final SimpleDateFormat sdf;
        private static final TimeZone gmt;
-       private static final Calendar cal;

+       // TODO: according to javadoc, SimpleDateFormat objects are not 
synchronized,
+       // should this be taken into account?
+       
        static {
-               sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
+               sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", 
Locale.US);
                gmt = TimeZone.getTimeZone("GMT");
-               cal = Calendar.getInstance(gmt);
+               sdf.setTimeZone(gmt);
        }

        public MailHeaderFilter(BufferedReader rdr) {
@@ -125,9 +127,7 @@
                                System.out.println("Warning: couldn't parse 
date: "+val+" (got null)");
                                return null;
                        }
-                       cal.setTime(d);
-                       cal.setTimeZone(gmt);
-                       return sdf.format(cal.getTime());
+                       return sdf.format(d);
                } else if (name.equalsIgnoreCase("User-Agent")) {
                        // might as well hide this
                        return null;


Reply via email to