diff --git a/source/de/anomic/http/httpHeader.java b/source/de/anomic/http/httpHeader.java index 35008bb09..e78348e86 100644 --- a/source/de/anomic/http/httpHeader.java +++ b/source/de/anomic/http/httpHeader.java @@ -174,7 +174,7 @@ public final class httpHeader extends TreeMap implements Map { http1_1.put("504","Gateway Time-out"); http1_1.put("505","HTTP Version not supported"); } - + private final HashMap reverseMappingCache; private static final Collator insensitiveCollator = Collator.getInstance(Locale.US); @@ -333,7 +333,7 @@ public final class httpHeader extends TreeMap implements Map { } private Date headerDate(String kind) { - if (containsKey(kind)) return parseHTTPDate((String) get(kind)); + if (containsKey(kind)) return new Date(parseHTTPDate((String) get(kind)).getTime()); else return null; } diff --git a/source/de/anomic/plasma/plasmaHTCache.java b/source/de/anomic/plasma/plasmaHTCache.java index 2ff996750..621587caf 100644 --- a/source/de/anomic/plasma/plasmaHTCache.java +++ b/source/de/anomic/plasma/plasmaHTCache.java @@ -59,6 +59,9 @@ import java.util.Date; import java.util.LinkedList; import java.util.Map; import java.util.TreeMap; +import java.util.Calendar; +import java.util.GregorianCalendar; +import java.util.TimeZone; import de.anomic.htmlFilter.htmlFilterContentScraper; import de.anomic.http.httpHeader; @@ -69,6 +72,7 @@ import de.anomic.kelondro.kelondroMap; import de.anomic.server.serverFileUtils; import de.anomic.server.serverInstantThread; import de.anomic.server.logging.serverLog; +import de.anomic.server.serverDate; import de.anomic.tools.enumerateFiles; public final class plasmaHTCache { @@ -680,8 +684,11 @@ public final class plasmaHTCache { // -expires in cached response // the expires value gives us a very easy hint when the cache is stale if (expires != null) { - Date yesterday = new Date((new Date()).getTime() - oneday); - if (expires.before(yesterday)) return false; + //Date yesterday = new Date((new Date()).getTime() - oneday); + //long now = new GregorianCalendar(TimeZone.getTimeZone("GMT+0")).getTimeInMillis(); + //System.out.println("EXPIRES-TEST: expires=" + expires.getTime()) + ", NOW=" + now + ", System.currentTimeMillis=" + System.currentTimeMillis() + ", url=" + url); + System.out.println("EXPIRES-TEST: expires=" + expires + ", NOW=" + serverDate.correctedGMTDate() + ", url=" + url); + if (expires.before(serverDate.correctedGMTDate())) return false; } // -lastModified in cached response @@ -731,4 +738,21 @@ public final class plasmaHTCache { } + /* + public static void main(String[] args) { + //String[] s = TimeZone.getAvailableIDs(); + //for (int i = 0; i < s.length; i++) System.out.println("ZONE=" + s[i]); + Calendar c = GregorianCalendar.getInstance(); + int zoneOffset = c.get(Calendar.ZONE_OFFSET)/(60*60*1000); + int DSTOffset = c.get(Calendar.DST_OFFSET)/(60*60*1000); + System.out.println("This Offset = " + (zoneOffset + DSTOffset)); + for (int i = 0; i < 12; i++) { + c = new GregorianCalendar(TimeZone.getTimeZone("Etc/GMT-" + i)); + //c.setTimeZone(TimeZone.getTimeZone("Etc/GMT+0")); + System.out.println("Zone offset: "+ + c.get(Calendar.ZONE_OFFSET)/(60*60*1000)); + System.out.println(c.get(GregorianCalendar.HOUR) + ", " + c.getTime() + ", " + c.getTimeInMillis()); + } + } + **/ } diff --git a/source/de/anomic/server/serverDate.java b/source/de/anomic/server/serverDate.java index c53684400..0d70dbd69 100644 --- a/source/de/anomic/server/serverDate.java +++ b/source/de/anomic/server/serverDate.java @@ -68,6 +68,12 @@ public final class serverDate { private final static String[] wkday = {"Mon","Tue","Wed","Thu","Fri","Sat","Sun"}; private final static String[] month = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"}; + // find out time zone and DST offset + private static Calendar thisCalendar = GregorianCalendar.getInstance(); + private static long zoneOffsetHours = thisCalendar.get(Calendar.ZONE_OFFSET); + private static long DSTOffsetHours = thisCalendar.get(Calendar.DST_OFFSET); + private static long offsetHours = zoneOffsetHours + DSTOffsetHours; // this must be subtracted from current Date().getTime() to produce a GMT Time + // pre-calculation of time tables private final static long[] dimnormalacc, dimleapacc; private static long[] utimeyearsacc; @@ -96,6 +102,10 @@ public final class serverDate { private int milliseconds, seconds, minutes, hours, days, months, years; // years since 1970 private int dow; // day-of-week private long utime; + + public static Date correctedGMTDate() { + return new Date(System.currentTimeMillis() - offsetHours); + } public serverDate() { this(System.currentTimeMillis()); @@ -253,6 +263,7 @@ public final class serverDate { public static void main(String[] args) { //System.out.println("kelondroDate is (" + new kelondroDate().toString() + ")"); + System.out.println("offset is " + (offsetHours/1000/60/60/24) + " hours, javaDate is " + new Date() + ", correctedDate is " + correctedGMTDate()); System.out.println("serverDate : " + new serverDate().toShortString(false)); System.out.println(" javaDate : " + testSDateShortString()); System.out.println("serverDate : " + new serverDate().toString()); diff --git a/source/de/anomic/yacy/yacyCore.java b/source/de/anomic/yacy/yacyCore.java index db4d51028..78d60bcbf 100644 --- a/source/de/anomic/yacy/yacyCore.java +++ b/source/de/anomic/yacy/yacyCore.java @@ -127,7 +127,7 @@ public class yacyCore { } public static Date parseUniversalDate(String remoteTimeString) { - if (remoteTimeString == null) return new Date(); + if ((remoteTimeString == null) || (remoteTimeString.length() == 0)) return new Date(); try { return yacyCore.shortFormatter.parse(remoteTimeString); } catch (java.text.ParseException e) { diff --git a/source/de/anomic/yacy/yacyNewsPool.java b/source/de/anomic/yacy/yacyNewsPool.java index 1d1cf02ba..24172bc4b 100644 --- a/source/de/anomic/yacy/yacyNewsPool.java +++ b/source/de/anomic/yacy/yacyNewsPool.java @@ -163,7 +163,7 @@ public class yacyNewsPool { return true; } if ((record.category().equals("crwlstrt")) && - (yacyCore.universalTime() - record.created().getTime() > 1000 * 60 * 60 /* 1 Hour */)) { + (yacyCore.universalTime() - record.created().getTime() > 1000 * 60 * 60 * 24 * 7 /* 1 Week */)) { yacySeed seed = yacyCore.seedDB.get(record.originator()); try { return (Integer.parseInt(seed.get("ISpeed", "-")) < 10);