From d39d420b39fa9556f4d631fb23718dd8094ce800 Mon Sep 17 00:00:00 2001 From: orbiter Date: Wed, 3 Dec 2008 15:38:29 +0000 Subject: [PATCH] performance hacks git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@5376 6c8d7289-2bf4-0310-a012-ef5d649a1542 --- bin/searchtest.sh | 2 +- build.properties | 2 +- htroot/Blog.java | 4 +-- htroot/Bookmarks.java | 3 +- htroot/CookieMonitorIncoming_p.java | 4 +-- htroot/CookieMonitorOutgoing_p.java | 4 +-- htroot/Messages_p.java | 4 +-- htroot/News.java | 3 +- htroot/Threaddump_p.java | 27 ++++++++++++--- htroot/yacysearch.java | 1 + htroot/yacysearch.json | 3 +- htroot/yacysearch.rss | 4 +-- htroot/yacysearchitem.json | 2 +- htroot/yacysearchtrailer.java | 3 +- htroot/yacysearchtrailer.json | 4 +-- source/de/anomic/crawler/FTPLoader.java | 4 +-- source/de/anomic/crawler/NoticedURL.java | 2 +- source/de/anomic/crawler/RobotsTxt.java | 4 +-- source/de/anomic/data/URLLicense.java | 33 +++++++++++++------ source/de/anomic/http/HttpClient.java | 13 -------- .../anomic/http/JakartaCommonsHttpClient.java | 16 --------- source/de/anomic/http/httpSSI.java | 23 ++++++------- source/de/anomic/http/httpTemplate.java | 4 +-- source/de/anomic/http/httpd.java | 11 ++++--- source/de/anomic/http/httpdFileHandler.java | 2 +- source/de/anomic/http/httpdProxyHandler.java | 3 +- source/de/anomic/icap/icapd.java | 4 +-- .../kelondro/kelondroAbstractIOChunks.java | 10 ++---- .../anomic/kelondro/kelondroAbstractRA.java | 29 +++------------- .../kelondro/kelondroAbstractRecords.java | 7 +++- .../de/anomic/kelondro/kelondroBLOBTree.java | 5 ++- .../kelondro/kelondroBufferedIOChunks.java | 10 +++--- .../anomic/kelondro/kelondroBufferedRA.java | 3 +- .../de/anomic/kelondro/kelondroByteArray.java | 5 --- .../de/anomic/kelondro/kelondroCachedRA.java | 10 +++--- source/de/anomic/kelondro/kelondroEcoFS.java | 3 +- source/de/anomic/kelondro/kelondroFileRA.java | 4 +-- .../de/anomic/kelondro/kelondroFlexTable.java | 7 +++- .../anomic/kelondro/kelondroFullRecords.java | 14 +++++--- .../de/anomic/kelondro/kelondroIOChunks.java | 3 +- .../de/anomic/kelondro/kelondroNIOFileRA.java | 5 ++- source/de/anomic/kelondro/kelondroNode.java | 2 +- source/de/anomic/kelondro/kelondroRA.java | 3 +- .../anomic/kelondro/kelondroRAIOChunks.java | 13 -------- source/de/anomic/server/serverDate.java | 20 +++++++++-- source/de/anomic/yacy/yacyURL.java | 5 +-- 46 files changed, 169 insertions(+), 178 deletions(-) diff --git a/bin/searchtest.sh b/bin/searchtest.sh index 859a9eb05..d5f0c35df 100755 --- a/bin/searchtest.sh +++ b/bin/searchtest.sh @@ -4,7 +4,7 @@ S=`date "+%s"` C=0 for N in `cat searchtest.words`; do echo search for $N: - ./localsearch.sh $N + ./localsearch.sh $N > /dev/null C=$(($C+1)) done T=`date "+%s"` diff --git a/build.properties b/build.properties index 502b08c99..dc6f4aa30 100644 --- a/build.properties +++ b/build.properties @@ -3,7 +3,7 @@ javacSource=1.5 javacTarget=1.5 # Release Configuration -releaseVersion=0.615 +releaseVersion=0.616 stdReleaseFile=yacy_v${releaseVersion}_${DSTAMP}_${releaseNr}.tar.gz embReleaseFile=yacy_emb_v${releaseVersion}_${DSTAMP}_${releaseNr}.tar.gz proReleaseFile=yacy_pro_v${releaseVersion}_${DSTAMP}_${releaseNr}.tar.gz diff --git a/htroot/Blog.java b/htroot/Blog.java index 867a5e55d..32f808eea 100644 --- a/htroot/Blog.java +++ b/htroot/Blog.java @@ -36,9 +36,9 @@ import java.util.Iterator; import de.anomic.data.blogBoard; import de.anomic.data.userDB; -import de.anomic.http.HttpClient; import de.anomic.http.httpRequestHeader; import de.anomic.plasma.plasmaSwitchboard; +import de.anomic.server.serverDate; import de.anomic.server.serverObjects; import de.anomic.server.serverSwitch; import de.anomic.yacy.yacyNewsPool; @@ -344,7 +344,7 @@ public class Blog { } prop.put("mode_entries_" + number + "_date", dateString(entry.getDate())); - prop.put("mode_entries_" + number + "_rfc822date", HttpClient.dateString(entry.getDate())); + prop.put("mode_entries_" + number + "_rfc822date", serverDate.formatRFC1123(entry.getDate())); prop.put("mode_entries_" + number + "_pageid", entry.getKey()); prop.put("mode_entries_" + number + "_address", address); prop.put("mode_entries_" + number + "_ip", entry.getIp()); diff --git a/htroot/Bookmarks.java b/htroot/Bookmarks.java index 59770fd9a..445655d4d 100644 --- a/htroot/Bookmarks.java +++ b/htroot/Bookmarks.java @@ -40,7 +40,6 @@ import de.anomic.data.bookmarksDB; import de.anomic.data.listManager; import de.anomic.data.userDB; import de.anomic.data.bookmarksDB.Tag; -import de.anomic.http.HttpClient; import de.anomic.http.httpRequestHeader; import de.anomic.index.indexURLReference; import de.anomic.plasma.plasmaParserDocument; @@ -294,7 +293,7 @@ public class Bookmarks { prop.putHTML("bookmarks_"+count+"_title", bookmark.getTitle()); prop.putHTML("bookmarks_"+count+"_description", bookmark.getDescription()); prop.put("bookmarks_"+count+"_date", serverDate.formatISO8601(new Date(bookmark.getTimeStamp()))); - prop.put("bookmarks_"+count+"_rfc822date", HttpClient.dateString(new Date(bookmark.getTimeStamp()))); + prop.put("bookmarks_"+count+"_rfc822date", serverDate.formatRFC1123(new Date(bookmark.getTimeStamp()))); prop.put("bookmarks_"+count+"_public", (bookmark.getPublic() ? "1" : "0")); //List Tags. diff --git a/htroot/CookieMonitorIncoming_p.java b/htroot/CookieMonitorIncoming_p.java index d25918ac3..c0443f57c 100644 --- a/htroot/CookieMonitorIncoming_p.java +++ b/htroot/CookieMonitorIncoming_p.java @@ -28,9 +28,9 @@ import java.util.Date; import java.util.Iterator; import java.util.Map; -import de.anomic.http.HttpClient; import de.anomic.http.httpRequestHeader; import de.anomic.plasma.plasmaSwitchboard; +import de.anomic.server.serverDate; import de.anomic.server.serverObjects; import de.anomic.server.serverSwitch; @@ -78,7 +78,7 @@ public class CookieMonitorIncoming_p { prop.put("list_" + entCount + "_dark", dark ? "1" : "0"); dark =! dark; prop.put("list_" + entCount + "_host", host); - prop.put("list_" + entCount + "_date", HttpClient.dateString(date)); + prop.put("list_" + entCount + "_date", serverDate.formatRFC1123(date)); prop.put("list_" + entCount + "_client", client); while (tmpCount < cookies.length){ prop.putHTML("list_" + entCount + "_cookies_" + tmpCount + "_item", ((String) cookies[tmpCount])); diff --git a/htroot/CookieMonitorOutgoing_p.java b/htroot/CookieMonitorOutgoing_p.java index 0a0598cdc..2bfbe1dd6 100644 --- a/htroot/CookieMonitorOutgoing_p.java +++ b/htroot/CookieMonitorOutgoing_p.java @@ -28,9 +28,9 @@ import java.util.Date; import java.util.Iterator; import java.util.Map; -import de.anomic.http.HttpClient; import de.anomic.http.httpRequestHeader; import de.anomic.plasma.plasmaSwitchboard; +import de.anomic.server.serverDate; import de.anomic.server.serverObjects; import de.anomic.server.serverSwitch; @@ -78,7 +78,7 @@ public class CookieMonitorOutgoing_p { prop.put("list_" + entCount + "_dark", dark ? "1" : "0" ); dark =! dark; prop.put("list_" + entCount + "_host", host); - prop.put("list_" + entCount + "_date", HttpClient.dateString(date)); + prop.put("list_" + entCount + "_date", serverDate.formatRFC1123(date)); prop.put("list_" + entCount + "_client", client); while (tmpCount < cookies.length){ prop.putHTML("list_" + entCount + "_cookies_" + tmpCount + "_item", ((String) cookies[tmpCount])); diff --git a/htroot/Messages_p.java b/htroot/Messages_p.java index e4462e0b2..3b40b7282 100644 --- a/htroot/Messages_p.java +++ b/htroot/Messages_p.java @@ -33,9 +33,9 @@ import java.util.Iterator; import java.util.TreeMap; import de.anomic.data.messageBoard; -import de.anomic.http.HttpClient; import de.anomic.http.httpRequestHeader; import de.anomic.plasma.plasmaSwitchboard; +import de.anomic.server.serverDate; import de.anomic.server.serverFileUtils; import de.anomic.server.serverObjects; import de.anomic.server.serverSwitch; @@ -131,7 +131,7 @@ public class Messages_p { prop.put("mode_messages_"+count+"_peerAddress", peerAddress); // set the rfc822 date - prop.put("mode_messages_"+count+"_rfc822Date",HttpClient.dateString(message.date())); + prop.put("mode_messages_"+count+"_rfc822Date", serverDate.formatRFC1123(message.date())); // also write out the message body (needed for the RSS feed) try { diff --git a/htroot/News.java b/htroot/News.java index 939775d77..13015ea15 100644 --- a/htroot/News.java +++ b/htroot/News.java @@ -29,7 +29,6 @@ import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; -import de.anomic.http.HttpClient; import de.anomic.http.httpRequestHeader; import de.anomic.plasma.plasmaSwitchboard; import de.anomic.server.serverDate; @@ -117,7 +116,7 @@ public class News { prop.put("table_list_" + i + "_id", record.id()); prop.putHTML("table_list_" + i + "_ori", (seed == null) ? record.originator() : seed.getName()); prop.put("table_list_" + i + "_cre", serverDate.formatShortSecond(record.created())); - prop.put("table_list_" + i + "_crerfcdate", HttpClient.dateString(record.created())); + prop.put("table_list_" + i + "_crerfcdate", serverDate.formatRFC1123(record.created())); prop.putHTML("table_list_" + i + "_cat", category); prop.put("table_list_" + i + "_rec", (record.received() == null) ? "-" : serverDate.formatShortSecond(record.received())); prop.put("table_list_" + i + "_dis", record.distributed()); diff --git a/htroot/Threaddump_p.java b/htroot/Threaddump_p.java index 7b3f422ad..365e5bbdf 100644 --- a/htroot/Threaddump_p.java +++ b/htroot/Threaddump_p.java @@ -34,6 +34,8 @@ import java.io.IOException; import java.util.Date; import java.util.Map; import java.util.Map.Entry; +import java.util.ArrayList; +import java.util.HashMap; import de.anomic.htmlFilter.htmlFilterCharacterCoding; import de.anomic.http.httpRequestHeader; @@ -97,6 +99,8 @@ public class Threaddump_p { final File classPath = new File(rootPath, "source"); Thread thread; + // collect single dumps + HashMap> dumps = new HashMap>(); for (final Entry entry: stackTraces.entrySet()) { thread = entry.getKey(); final StackTraceElement[] stackTraceElements = entry.getValue(); @@ -104,7 +108,8 @@ public class Threaddump_p { String line; String tracename = ""; File classFile; - if ((stateIn.equals(thread.getState())) && (stackTraceElements.length > 0)) { + if ((stateIn.equals(thread.getState())) && (stackTraceElements.length > 0)) { + StringBuffer sb = new StringBuffer(); if (plain) { classFile = getClassFile(classPath, stackTraceElements[stackTraceElements.length - 1].getClassName()); tracename = classFile.getName(); @@ -113,7 +118,7 @@ public class Threaddump_p { while (tracename.length() < 20) tracename = tracename + "_"; tracename = "[" + tracename + "] "; } - bufferappend(buffer, plain, tracename + "Thread= " + thread.getName() + " " + (thread.isDaemon()?"daemon":"") + " id=" + thread.getId() + " " + thread.getState().toString()); + String threadtitle = tracename + "Thread= " + thread.getName() + " " + (thread.isDaemon()?"daemon":"") + " id=" + thread.getId() + " " + thread.getState().toString(); for (int i = 0; i < stackTraceElements.length; i++) { ste = stackTraceElements[i]; if (i == 0) { @@ -122,14 +127,26 @@ public class Threaddump_p { line = null; } if ((line != null) && (line.length() > 0)) { - bufferappend(buffer, plain, tracename + "at " + htmlFilterCharacterCoding.unicode2html(ste.toString(), true) + " [" + line.trim() + "]"); + bufferappend(sb, plain, tracename + "at " + htmlFilterCharacterCoding.unicode2html(ste.toString(), true) + " [" + line.trim() + "]"); } else { - bufferappend(buffer, plain, tracename + "at " + htmlFilterCharacterCoding.unicode2html(ste.toString(), true)); + bufferappend(sb, plain, tracename + "at " + htmlFilterCharacterCoding.unicode2html(ste.toString(), true)); } } - bufferappend(buffer, plain, ""); + String threaddump = sb.toString(); + ArrayList threads = dumps.get(threaddump); + if (threads == null) threads = new ArrayList(); + threads.add(threadtitle); + dumps.put(threaddump, threads); } } + + // write dumps + for (final Entry> entry: dumps.entrySet()) { + ArrayList threads = entry.getValue(); + for (int i = 0; i < threads.size(); i++) bufferappend(buffer, plain, threads.get(i)); + bufferappend(buffer, plain, entry.getKey()); + bufferappend(buffer, plain, ""); + } bufferappend(buffer, plain, ""); } diff --git a/htroot/yacysearch.java b/htroot/yacysearch.java index 8edcc9538..8a5e68f1c 100644 --- a/htroot/yacysearch.java +++ b/htroot/yacysearch.java @@ -385,6 +385,7 @@ public class yacysearch { prop.put("results_" + i + "_item", offset + i); prop.put("results_" + i + "_eventID", theQuery.id(false)); prop.put("results_" + i + "_display", display); + prop.put("results_" + i + "_nl", (i < theQuery.displayResults() - 1) ? 1 : 0); } prop.put("results", theQuery.displayResults()); prop.put("resultTable", (contentdomCode <= 1) ? "0" : "1"); diff --git a/htroot/yacysearch.json b/htroot/yacysearch.json index 5478465c3..100f9d4d0 100644 --- a/htroot/yacysearch.json +++ b/htroot/yacysearch.json @@ -18,8 +18,9 @@ "items": [ #{results}# +#(nl)#:: ,#(/nl)# #{/results}# - {}], + ], }] } \ No newline at end of file diff --git a/htroot/yacysearch.rss b/htroot/yacysearch.rss index 550c14783..68d6ea272 100644 --- a/htroot/yacysearch.rss +++ b/htroot/yacysearch.rss @@ -20,9 +20,9 @@ - #{results}# +#{results}# - #{/results}# +#{/results}# diff --git a/htroot/yacysearchitem.json b/htroot/yacysearchitem.json index 6eb237956..ccdadbdf7 100644 --- a/htroot/yacysearchitem.json +++ b/htroot/yacysearchitem.json @@ -4,4 +4,4 @@ "description": "#[description]#", "pubDate": "#[date822]#", "guid": "#[urlhash]#" - },#(/content)# \ No newline at end of file + }#(/content)# \ No newline at end of file diff --git a/htroot/yacysearchtrailer.java b/htroot/yacysearchtrailer.java index 13d14b55d..2b31ba38d 100644 --- a/htroot/yacysearchtrailer.java +++ b/htroot/yacysearchtrailer.java @@ -101,12 +101,13 @@ public class yacysearchtrailer { prop.put("words_" + hintcount + "_offset", "0"); prop.put("words_" + hintcount + "_contentdom", theQuery.contentdom()); prop.put("words_" + hintcount + "_resource", ((theQuery.isLocal()) ? "local" : "global")); + prop.put("words_" + hintcount + "_nl", (iter.hasNext() && hintcount < MAX_TOPWORDS) ? 1 : 0); } - prop.put("words", hintcount); if (hintcount++ > MAX_TOPWORDS) { break; } } + prop.put("words", hintcount); } serverProfiling.update("SEARCH", new plasmaProfiling.searchEvent(theQuery.id(true), plasmaSearchEvent.FINALIZATION + "-" + "bottomline", 0, 0)); diff --git a/htroot/yacysearchtrailer.json b/htroot/yacysearchtrailer.json index a92be936b..a01430cd8 100644 --- a/htroot/yacysearchtrailer.json +++ b/htroot/yacysearchtrailer.json @@ -1,5 +1,5 @@ "yacy$topwords": [ #{words}# -{ "word": "#[word]#" }, +{ "word": "#[word]#" }#(nl)#::,#(/nl)# #{/words}# -{}] \ No newline at end of file +] \ No newline at end of file diff --git a/source/de/anomic/crawler/FTPLoader.java b/source/de/anomic/crawler/FTPLoader.java index 5d8d715bb..0756476ec 100644 --- a/source/de/anomic/crawler/FTPLoader.java +++ b/source/de/anomic/crawler/FTPLoader.java @@ -32,7 +32,6 @@ import java.io.IOException; import java.io.PrintStream; import java.util.Date; -import de.anomic.http.JakartaCommonsHttpClient; import de.anomic.http.httpRequestHeader; import de.anomic.http.httpResponseHeader; import de.anomic.http.httpdProxyCacheEntry; @@ -41,6 +40,7 @@ import de.anomic.net.ftpc; import de.anomic.plasma.plasmaHTCache; import de.anomic.plasma.plasmaParser; import de.anomic.plasma.plasmaSwitchboard; +import de.anomic.server.serverDate; import de.anomic.server.logging.serverLog; import de.anomic.yacy.yacyURL; @@ -60,7 +60,7 @@ public class FTPLoader { httpRequestHeader requestHeader = new httpRequestHeader(); requestHeader.put(httpRequestHeader.REFERER, sb.getURL(entry.referrerhash()).toNormalform(true, false)); httpResponseHeader responseHeader = new httpResponseHeader(); - responseHeader.put(httpResponseHeader.LAST_MODIFIED, JakartaCommonsHttpClient.date2String(fileDate)); + responseHeader.put(httpResponseHeader.LAST_MODIFIED, serverDate.formatRFC1123(fileDate)); responseHeader.put(httpResponseHeader.CONTENT_TYPE, mimeType); indexDocumentMetadata metadata = new httpdProxyCacheEntry(entry.depth(), entry.url(), entry.name(), "OK", requestHeader, responseHeader, diff --git a/source/de/anomic/crawler/NoticedURL.java b/source/de/anomic/crawler/NoticedURL.java index e83497c18..2c6739956 100755 --- a/source/de/anomic/crawler/NoticedURL.java +++ b/source/de/anomic/crawler/NoticedURL.java @@ -222,7 +222,7 @@ public class NoticedURL { if (s > balancer.size()) continue; final int aftersize = balancer.size(); balancer.clear(); // the balancer is broken and cannot shrink - throw new IOException("entry is null, balancer cannot shrink (bevore pop = " + s + ", after pop = " + aftersize + "); reset of balancer"); + serverLog.logWarning("BALANCER", "entry is null, balancer cannot shrink (bevore pop = " + s + ", after pop = " + aftersize + "); reset of balancer"); } return entry; } diff --git a/source/de/anomic/crawler/RobotsTxt.java b/source/de/anomic/crawler/RobotsTxt.java index cc3f08005..ea8877330 100644 --- a/source/de/anomic/crawler/RobotsTxt.java +++ b/source/de/anomic/crawler/RobotsTxt.java @@ -40,7 +40,6 @@ import java.util.LinkedList; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import de.anomic.http.HttpClient; import de.anomic.http.JakartaCommonsHttpClient; import de.anomic.http.JakartaCommonsHttpResponse; import de.anomic.http.httpRequestHeader; @@ -51,6 +50,7 @@ import de.anomic.kelondro.kelondroException; import de.anomic.kelondro.kelondroMap; import de.anomic.kelondro.kelondroNaturalOrder; import de.anomic.server.serverByteBuffer; +import de.anomic.server.serverDate; import de.anomic.server.serverFileUtils; import de.anomic.server.logging.serverLog; import de.anomic.yacy.yacyURL; @@ -516,7 +516,7 @@ public class RobotsTxt { oldEtag = entry.getETag(); reqHeaders = new httpRequestHeader(); final Date modDate = entry.getModDate(); - if (modDate != null) reqHeaders.put(httpRequestHeader.IF_MODIFIED_SINCE,HttpClient.dateString(entry.getModDate())); + if (modDate != null) reqHeaders.put(httpRequestHeader.IF_MODIFIED_SINCE, serverDate.formatRFC1123(entry.getModDate())); } diff --git a/source/de/anomic/data/URLLicense.java b/source/de/anomic/data/URLLicense.java index 3a955b297..b523bcc7d 100644 --- a/source/de/anomic/data/URLLicense.java +++ b/source/de/anomic/data/URLLicense.java @@ -26,8 +26,9 @@ package de.anomic.data; -import java.util.HashMap; import java.util.Random; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentLinkedQueue; import de.anomic.yacy.yacyURL; @@ -35,13 +36,19 @@ public class URLLicense { // this class defines a license-generation for URLs // it is used in case of snippet- and preview-Image-fetching to grant also non-authorized users the usage of a image-fetcher servlet - + private static final int maxQueue = 500; + private static final long minCheck = 5000; + private final Random random; - private final HashMap permissions; - private final int keylen; + private final ConcurrentHashMap permissions; + private final ConcurrentLinkedQueue aging; + private long lastCheck; + private int keylen; public URLLicense(final int keylen) { - this.permissions = new HashMap(); + this.permissions = new ConcurrentHashMap(); + this.aging = new ConcurrentLinkedQueue(); + this.lastCheck = System.currentTimeMillis(); this.random = new Random(System.currentTimeMillis()); this.keylen = keylen; } @@ -52,8 +59,16 @@ public class URLLicense { while (license.length() < keylen) license += Integer.toHexString(random.nextInt()); license = license.substring(0, keylen); // store reference to url with license key - synchronized (permissions) { - permissions.put(license, url); + permissions.put(license, url); + aging.add(license); + if (System.currentTimeMillis() - this.lastCheck > minCheck) { + // check aging + this.lastCheck = System.currentTimeMillis(); + String s; + while (aging.size() > maxQueue) { + s = aging.poll(); + if (s != null) permissions.remove(s); + } } // return the license key return license; @@ -61,9 +76,7 @@ public class URLLicense { public yacyURL releaseLicense(final String license) { yacyURL url = null; - synchronized (permissions) { - url = permissions.remove(license); - } + url = permissions.remove(license); /* if (url == null) { System.out.println("DEBUG-URLLICENSE: no URL license present for code=" + license); diff --git a/source/de/anomic/http/HttpClient.java b/source/de/anomic/http/HttpClient.java index c55580179..2d92bb361 100644 --- a/source/de/anomic/http/HttpClient.java +++ b/source/de/anomic/http/HttpClient.java @@ -27,7 +27,6 @@ package de.anomic.http; import java.io.IOException; -import java.util.Date; import de.anomic.server.logging.serverLog; @@ -66,18 +65,6 @@ public abstract class HttpClient { public static String getSystemOST() { return systemOST; } - - /** - * for easy access - * - * @see date2String(Date) - * @param date - * @return - */ - public static String dateString(final Date date) { - return JakartaCommonsHttpClient.date2String(date); - } - /** * Gets a page (as raw bytes) addressing vhost at host in uri with specified header and timeout diff --git a/source/de/anomic/http/JakartaCommonsHttpClient.java b/source/de/anomic/http/JakartaCommonsHttpClient.java index d49ae3116..3d385f2cd 100644 --- a/source/de/anomic/http/JakartaCommonsHttpClient.java +++ b/source/de/anomic/http/JakartaCommonsHttpClient.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; -import java.util.Date; import java.util.List; import java.util.Map.Entry; import java.util.zip.GZIPOutputStream; @@ -58,7 +57,6 @@ import org.apache.commons.httpclient.params.DefaultHttpParams; import org.apache.commons.httpclient.params.HttpMethodParams; import org.apache.commons.httpclient.protocol.Protocol; import org.apache.commons.httpclient.protocol.ProtocolSocketFactory; -import org.apache.commons.httpclient.util.DateUtil; import de.anomic.kelondro.kelondroBase64Order; import de.anomic.server.logging.serverLog; @@ -585,20 +583,6 @@ public class JakartaCommonsHttpClient { return hostConfig; } - /** - * Returns the given date in an HTTP-usable format. (according to RFC1123/RFC822) - * - * @param date The Date-Object to be converted. - * @return String with the date. - */ - public static String date2String(final Date date) { // TODO: merge this method with serverDate - if (date == null) { - return ""; - } - - return DateUtil.formatDate(date); - } - /** * close all connections */ diff --git a/source/de/anomic/http/httpSSI.java b/source/de/anomic/http/httpSSI.java index 13b9c4cf5..f9630b9e7 100644 --- a/source/de/anomic/http/httpSSI.java +++ b/source/de/anomic/http/httpSSI.java @@ -39,23 +39,24 @@ public class httpSSI { writeSSI(in, 0, out, authorization, requesthost); } - public static void writeSSI(final serverByteBuffer in, final int off, final OutputStream out, final String authorization, final String requesthost) throws IOException { - final int p = in.indexOf("".getBytes(), p + 10); + public static void writeSSI(final serverByteBuffer in, int off, final OutputStream out, final String authorization, final String requesthost) throws IOException { + int p = in.indexOf("".getBytes(), p + 10); if (out instanceof httpChunkedOutputStream) { ((httpChunkedOutputStream) out).write(in, off, p - off); } else { out.write(in.getBytes(off, p - off)); } parseSSI(in, p, q + 3 - p, out, authorization, requesthost); - writeSSI(in, q + 3, out, authorization, requesthost); - } else /* p < 0 */ { - if (out instanceof httpChunkedOutputStream) { - ((httpChunkedOutputStream) out).write(in, off, in.length() - off); - } else { - out.write(in.getBytes(off, in.length() - off)); - } + off = q + 3; + p = in.indexOf("