From 12fae66948dffc247956756c1c64b8d8ce711fcb Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 26 Dec 2010 12:27:40 +0000 Subject: [PATCH] - Fix about 9 NPEs - Fix numwant in magnet mode - Send metadata size in extension handshake - Open trackers are primary if we don't have primary trackers - Add missing break in port message handling - Increase max msg size to account for metadata msg - Remember magnets across restarts - Drop peers w/o extensions if we need metainfo - Fix DATA messages - Fix tracker transition to non-magnet - Fix infohash for non-magnet - Fix up peer transition to non-magnet - More logging --- .../src/org/klomp/snark/bencode/BEncoder.java | 2 ++ .../org/klomp/snark/web/I2PSnarkServlet.java | 20 +++---------------- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/bencode/BEncoder.java b/apps/i2psnark/java/src/org/klomp/snark/bencode/BEncoder.java index 1a9236248..9584b0d9d 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/bencode/BEncoder.java +++ b/apps/i2psnark/java/src/org/klomp/snark/bencode/BEncoder.java @@ -50,6 +50,8 @@ public class BEncoder public static void bencode(Object o, OutputStream out) throws IOException, IllegalArgumentException { + if (o == null) + throw new NullPointerException("Cannot bencode null"); if (o instanceof String) bencode((String)o, out); else if (o instanceof byte[]) diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 61c9c8e57..bd08dc46d 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -35,6 +35,7 @@ import net.i2p.util.I2PAppThread; import net.i2p.util.Log; import net.i2p.util.SecureFileOutputStream; +import org.klomp.snark.I2PSnarkUtil; import org.klomp.snark.MetaInfo; import org.klomp.snark.Peer; import org.klomp.snark.Snark; @@ -1389,7 +1390,7 @@ public class I2PSnarkServlet extends Default { _manager.addMessage(_("Invalid info hash in magnet URL {0}", url)); return; } - _manager.addMagnet(name, ih); + _manager.addMagnet(name, ih, true); } /** copied from ConfigTunnelsHelper */ @@ -1574,7 +1575,7 @@ public class I2PSnarkServlet extends Default { } buf.append("
").append(_("Pieces")).append(": ").append(pieces); buf.append("
").append(_("Piece size")).append(": ").append(formatSize(snark.getPieceLength(0))); - String hex = toHex(snark.getInfoHash()); + String hex = I2PSnarkUtil.toHex(snark.getInfoHash()); buf.append("
").append(_("Magnet link")).append(": ") .append(MAGNET).append(hex).append(""); // We don't have the hash of the torrent file @@ -1799,21 +1800,6 @@ public class I2PSnarkServlet extends Default { return "\"""; } - /** - * Like DataHelper.toHexString but ensures no loss of leading zero bytes - * @since 0.8.4 - */ - private static String toHex(byte[] b) { - StringBuilder buf = new StringBuilder(40); - for (int i = 0; i < b.length; i++) { - int bi = b[i] & 0xff; - if (bi < 16) - buf.append('0'); - buf.append(Integer.toHexString(bi)); - } - return buf.toString(); - } - /** @since 0.8.1 */ private void savePriorities(Snark snark, Map postParams) { Storage storage = snark.getStorage();