From 20c42a175da627708ee774bfd159b62827258221 Mon Sep 17 00:00:00 2001 From: jrandom <jrandom> Date: Sat, 17 Sep 2005 20:08:25 +0000 Subject: [PATCH] 2005-09-17 jrandom * Bugfixes in Syndie to handle missing cache files (no data was lost, the old posts just didn't show up). * Log properly in EepPost --- .../java/src/net/i2p/syndie/Archive.java | 16 +++++--- .../java/src/net/i2p/syndie/CachedEntry.java | 41 ++++++++++++------- core/java/src/net/i2p/util/EepPost.java | 30 +++++++++++--- history.txt | 7 +++- 4 files changed, 67 insertions(+), 27 deletions(-) diff --git a/apps/syndie/java/src/net/i2p/syndie/Archive.java b/apps/syndie/java/src/net/i2p/syndie/Archive.java index 21e6093dbf..43bb47402b 100644 --- a/apps/syndie/java/src/net/i2p/syndie/Archive.java +++ b/apps/syndie/java/src/net/i2p/syndie/Archive.java @@ -215,15 +215,19 @@ public class Archive { private EntryContainer getCachedEntry(File entryDir) { try { - return new CachedEntry(entryDir); + CachedEntry ce = new CachedEntry(entryDir); + if (ce.isValid()) + return ce; + return null; } catch (IOException ioe) { ioe.printStackTrace(); - File files[] = entryDir.listFiles(); - for (int i = 0; i < files.length; i++) - files[i].delete(); - entryDir.delete(); - return null; } + + File files[] = entryDir.listFiles(); + for (int i = 0; i < files.length; i++) + files[i].delete(); + entryDir.delete(); + return null; } public EntryContainer getEntry(BlogURI uri) { return getEntry(uri, null); } diff --git a/apps/syndie/java/src/net/i2p/syndie/CachedEntry.java b/apps/syndie/java/src/net/i2p/syndie/CachedEntry.java index 227686b1a6..9e05c66da8 100644 --- a/apps/syndie/java/src/net/i2p/syndie/CachedEntry.java +++ b/apps/syndie/java/src/net/i2p/syndie/CachedEntry.java @@ -28,6 +28,10 @@ class CachedEntry extends EntryContainer { _attachments = null; } + public boolean isValid() { + return (_entry != null) && (_blog != null); + } + // always available, loaded from meta public int getFormat() { return _format; } public BlogURI getURI() { return _blog; } @@ -70,7 +74,7 @@ class CachedEntry extends EntryContainer { } // now the actual lazy loading code - private void importMeta() { + private void importMeta() throws IOException { Properties meta = readProps(new File(_entryDir, EntryExtractor.META)); _format = getInt(meta, "format"); _size = getInt(meta, "size"); @@ -78,8 +82,14 @@ class CachedEntry extends EntryContainer { } private Properties importHeaders() { - if (_headers == null) - _headers = readProps(new File(_entryDir, EntryExtractor.HEADERS)); + if (_headers == null) { + try { + _headers = readProps(new File(_entryDir, EntryExtractor.HEADERS)); + } catch (IOException ioe) { + ioe.printStackTrace(); + _headers = new Properties(); + } + } return _headers; } @@ -103,7 +113,7 @@ class CachedEntry extends EntryContainer { return; } - private static Properties readProps(File propsFile) { + private static Properties readProps(File propsFile) throws IOException { Properties rv = new Properties(); BufferedReader in = null; try { @@ -114,8 +124,6 @@ class CachedEntry extends EntryContainer { if ( (split <= 0) || (split >= line.length()) ) continue; rv.setProperty(line.substring(0, split).trim(), line.substring(split+1).trim()); } - } catch (IOException ioe) { - ioe.printStackTrace(); } finally { if (in != null) try { in.close(); } catch (IOException ioe) {} } @@ -222,15 +230,20 @@ class CachedEntry extends EntryContainer { private void importAttachmentHeaders() { if (_attachmentHeaders == null) { - Properties props = readProps(_metaFile); - String sz = (String)props.remove(EntryExtractor.ATTACHMENT_DATA_SIZE); - if (sz != null) { - try { - _dataSize = Integer.parseInt(sz); - } catch (NumberFormatException nfe) {} + try { + Properties props = readProps(_metaFile); + String sz = (String)props.remove(EntryExtractor.ATTACHMENT_DATA_SIZE); + if (sz != null) { + try { + _dataSize = Integer.parseInt(sz); + } catch (NumberFormatException nfe) {} + } + + _attachmentHeaders = props; + } catch (IOException ioe) { + ioe.printStackTrace(); + _attachmentHeaders = new Properties(); } - - _attachmentHeaders = props; } } } diff --git a/core/java/src/net/i2p/util/EepPost.java b/core/java/src/net/i2p/util/EepPost.java index e938493419..b3db1762c9 100644 --- a/core/java/src/net/i2p/util/EepPost.java +++ b/core/java/src/net/i2p/util/EepPost.java @@ -4,12 +4,24 @@ import java.io.*; import java.net.*; import java.util.*; import net.i2p.I2PAppContext; +import net.i2p.util.Log; /** * Simple helper for uploading files and such via HTTP POST (rfc 1867) * */ public class EepPost { + private I2PAppContext _context; + private Log _log; + + public EepPost() { + this(I2PAppContext.getGlobalContext()); + } + public EepPost(I2PAppContext ctx) { + _context = ctx; + _log = ctx.logManager().getLog(EepPost.class); + } + public static void main(String args[]) { EepPost e = new EepPost(); Map fields = new HashMap(); @@ -53,6 +65,7 @@ public class EepPost { _onCompletion = onCompletion; } public void run() { + Socket s = null; try { URL u = new URL(_url); String h = u.getHost(); @@ -68,12 +81,13 @@ public class EepPost { _proxyPort = p; } - Socket s = new Socket(_proxyHost, _proxyPort); + s = new Socket(_proxyHost, _proxyPort); OutputStream out = s.getOutputStream(); String sep = getSeparator(); long length = calcContentLength(sep, _fields); String header = getHeader(isProxy, path, h, p, sep, length); - System.out.println("Header: \n" + header); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Header: \n" + header); out.write(header.getBytes()); out.flush(); if (false) { @@ -82,14 +96,18 @@ public class EepPost { sendFields(out, sep, _fields); } out.flush(); - BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); - String line = null; - while ( (line = in.readLine()) != null) - System.out.println("recv: [" + line + "]"); + if (_log.shouldLog(Log.DEBUG)) { + BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); + String line = null; + while ( (line = in.readLine()) != null) { + _log.debug("recv: [" + line + "]"); + } + } out.close(); } catch (Exception e) { e.printStackTrace(); } finally { + if (s != null) try { s.close(); } catch (IOException ioe) {} if (_onCompletion != null) _onCompletion.run(); } diff --git a/history.txt b/history.txt index 6245c45e30..d24fb36f6e 100644 --- a/history.txt +++ b/history.txt @@ -1,4 +1,9 @@ -$Id: history.txt,v 1.253 2005/09/16 16:24:43 jrandom Exp $ +$Id: history.txt,v 1.254 2005/09/17 02:31:50 jrandom Exp $ + +2005-09-17 jrandom + * Bugfixes in Syndie to handle missing cache files (no data was lost, the + old posts just didn't show up). + * Log properly in EepPost 2005-09-17 jrandom * Added the natively compiled jbigi and patched java service wrapper for -- GitLab