diff --git a/apps/i2psnark/java/src/org/klomp/snark/Snark.java b/apps/i2psnark/java/src/org/klomp/snark/Snark.java index b02a8293f..193aab510 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Snark.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Snark.java @@ -234,6 +234,7 @@ public class Snark public String rootDataDir = "."; public CompleteListener completeListener; public boolean stopped; + byte[] id; Snark(String torrent, String ip, int user_port, StorageListener slistener, CoordinatorListener clistener) { @@ -268,7 +269,7 @@ public class Snark // zeros bytes, then three bytes filled with snark and then // sixteen random bytes. byte snark = (((3 + 7 + 10) * (1000 - 8)) / 992) - 17; - byte[] id = new byte[20]; + id = new byte[20]; Random random = new Random(); int i; for (i = 0; i < 9; i++) @@ -378,18 +379,18 @@ public class Snark } +/* + * see comment above + * activity = "Collecting pieces"; coordinator = new PeerCoordinator(id, meta, storage, clistener, this); PeerCoordinatorSet set = PeerCoordinatorSet.instance(); set.add(coordinator); -/* - * see comment above - * ConnectionAcceptor acceptor = ConnectionAcceptor.instance(); acceptor.startAccepting(set, serversocket); + trackerclient = new TrackerClient(meta, coordinator); */ - trackerclient = new TrackerClient(meta, coordinator); if (start) startTorrent(); } @@ -397,6 +398,24 @@ public class Snark * Start up contacting peers and querying the tracker */ public void startTorrent() { + if (coordinator == null) { + I2PServerSocket serversocket = I2PSnarkUtil.instance().getServerSocket(); + if (serversocket == null) + fatal("Unable to listen for I2P connections"); + else { + Destination d = serversocket.getManager().getSession().getMyDestination(); + debug("Listening on I2P destination " + d.toBase64() + " / " + d.calculateHash().toBase64(), NOTICE); + } + debug("Starting PeerCoordinator, ConnectionAcceptor, and TrackerClient", NOTICE); + activity = "Collecting pieces"; + coordinator = new PeerCoordinator(id, meta, storage, this, this); + PeerCoordinatorSet set = PeerCoordinatorSet.instance(); + set.add(coordinator); + ConnectionAcceptor acceptor = ConnectionAcceptor.instance(); + acceptor.startAccepting(set, serversocket); + trackerclient = new TrackerClient(meta, coordinator); + } + stopped = false; boolean coordinatorChanged = false; if (coordinator.halted()) { 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 37f78516d..153013621 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -330,16 +330,23 @@ public class I2PSnarkServlet extends HttpServlet { long remaining = (long) snark.storage.needed() * (long) snark.meta.getPieceLength(0); if (remaining > total) remaining = total; - long downBps = snark.coordinator.getDownloadRate(); - long upBps = snark.coordinator.getUploadRate(); + long downBps = 0; + long upBps = 0; + if (snark.coordinator != null) { + downBps = snark.coordinator.getDownloadRate(); + upBps = snark.coordinator.getUploadRate(); + } long remainingSeconds; if (downBps > 0) remainingSeconds = remaining / downBps; else remainingSeconds = -1; - long uploaded = snark.coordinator.getUploaded(); boolean isRunning = !snark.stopped; - stats[0] += snark.coordinator.getDownloaded(); + long uploaded = 0; + if (snark.coordinator != null) { + uploaded = snark.coordinator.getUploaded(); + stats[0] += snark.coordinator.getDownloaded(); + } stats[1] += uploaded; if (isRunning) { stats[2] += downBps; @@ -349,9 +356,14 @@ public class I2PSnarkServlet extends HttpServlet { boolean isValid = snark.meta != null; boolean singleFile = snark.meta.getFiles() == null; - String err = snark.coordinator.trackerProblems; - int curPeers = snark.coordinator.getPeerCount(); - int knownPeers = snark.coordinator.trackerSeenPeers; + String err = null; + int curPeers = 0; + int knownPeers = 0; + if (snark.coordinator != null) { + err = snark.coordinator.trackerProblems; + curPeers = snark.coordinator.getPeerCount(); + knownPeers = snark.coordinator.trackerSeenPeers; + } String statusString = "Unknown"; if (err != null) { diff --git a/history.txt b/history.txt index 7676c90cb..2bda86b6d 100644 --- a/history.txt +++ b/history.txt @@ -1,4 +1,10 @@ -$Id: history.txt,v 1.536 2007-01-14 23:36:06 zzz Exp $ +$Id: history.txt,v 1.537 2007-01-15 01:35:59 jrandom Exp $ + +2007-01-16 zzz + * i2psnark: Fix bug caused by last i2psnark checkin + (ConnectionAcceptor not started) + * Don't start PeerCoordinator, ConnectionAcceptor, + and TrackerClient unless starting torrent 2007-01-15 jrandom * small guard against unnecessary streaming lib reset packets diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index b40cedda9..145e4593c 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -15,9 +15,9 @@ import net.i2p.CoreVersion; * */ public class RouterVersion { - public final static String ID = "$Revision: 1.471 $ $Date: 2007-01-14 23:36:03 $"; + public final static String ID = "$Revision: 1.472 $ $Date: 2007-01-15 01:36:07 $"; public final static String VERSION = "0.6.1.26"; - public final static long BUILD = 5; + public final static long BUILD = 6; public static void main(String args[]) { System.out.println("I2P Router version: " + VERSION + "-" + BUILD); System.out.println("Router ID: " + RouterVersion.ID);