2003-06-27 14:24  Mark Wielaard  <mark@klomp.org>

	* README: Update version number and explain new features.

2003-06-27 13:51  Mark Wielaard  <mark@klomp.org>

	* Makefile, org/klomp/snark/GnomeInfoWindow.java,
	org/klomp/snark/GnomePeerList.java,
	org/klomp/snark/PeerCoordinator.java,
	org/klomp/snark/SnarkGnome.java: Add GnomeInfoWindow.

2003-06-27 00:37  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/Snark.java: Implement 'info' and 'list' commands.

2003-06-27 00:05  Mark Wielaard  <mark@klomp.org>

	* Makefile, org/klomp/snark/GnomePeerList.java,
	org/klomp/snark/SnarkGnome.java: Add GnomePeerList to show state of
	connected peers.

2003-06-27 00:04  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/: Peer.java, PeerID.java: Make Comparable.

2003-06-23 23:32  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerMonitorTask.java: Correctly update
	lastDownloaded and lastUploaded.

2003-06-23 23:20  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/Snark.java: When checking storage use the
	MetaInfo from the storage.

2003-06-23 21:47  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/Storage.java: Fill piece hashes, not info hashes.

2003-06-23 21:42  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/MetaInfo.java: New package private
	getPieceHashes() method.

2003-06-22 19:49  Mark Wielaard  <mark@klomp.org>

	* README, TODO, org/klomp/snark/Snark.java: Add new command line
	switch --no-commands.  Don't read interactive commands or show
	usage info.

2003-06-22 19:26  Mark Wielaard  <mark@klomp.org>

	* Makefile, org/klomp/snark/PeerCheckerTask.java,
	org/klomp/snark/PeerMonitorTask.java, org/klomp/snark/Snark.java:
	Split peer statistic reporting from PeerCheckerTask into
	PeerMonitorTask.  Use new task in Snark text ui.

2003-06-22 18:32  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/Snark.java: Only print peer id when debug level
	is INFO or higher.

2003-06-22 18:00  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/ShutdownListener.java: Add new ShutdownListener
	interface.

2003-06-22 17:18  Mark Wielaard  <mark@klomp.org>

	* TODO: Text UI item to not read from stdin.

2003-06-22 17:18  Mark Wielaard  <mark@klomp.org>

	* snark-gnome.sh: kaffe java-gnome support (but crashes hard at the
	moment).

2003-06-22 14:04  Mark Wielaard  <mark@klomp.org>

	* Makefile, org/klomp/snark/CoordinatorListener.java,
	org/klomp/snark/PeerCoordinator.java,
	org/klomp/snark/ProgressListener.java, org/klomp/snark/Snark.java,
	org/klomp/snark/SnarkGnome.java,
	org/klomp/snark/SnarkShutdown.java, org/klomp/snark/Storage.java,
	org/klomp/snark/StorageListener.java: Split ProgressListener into
	Storage, Coordinator and Shutdown listener.

2003-06-20 19:06  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/: PeerCoordinator.java, Snark.java,
	SnarkGnome.java, Storage.java: Progress listeners for both Storage
	and PeerCoordinator.

2003-06-20 14:50  Mark Wielaard  <mark@klomp.org>

	* Makefile, org/klomp/snark/PeerCoordinator.java,
	org/klomp/snark/ProgressListener.java,
	org/klomp/snark/SnarkGnome.java: Add ProgressListener.

2003-06-20 13:22  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/SnarkGnome.java: Add Pieces collected field.

2003-06-20 12:26  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/: PeerCoordinator.java, PeerListener.java,
	PeerState.java: Add PeerListener.downloaded() which gets called on
	chunk updates.	Keep PeerCoordinator.downloaded up to date using
	this remove adjusting in gotPiece() except when we receive a bad
	piece.

2003-06-16 00:27  Mark Wielaard  <mark@klomp.org>

	* Makefile, snark-gnome.sh, org/klomp/snark/Snark.java,
	org/klomp/snark/SnarkGnome.java: Start of a Gnome GUI.

2003-06-05 13:19  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerCoordinator.java: Don't remove a BAD piece
	from the wantedPieces list.  Revert to synchronizing on
	wantedPieces for all relevant sections.

2003-06-03 21:09  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/Snark.java: Only call readLine() when !quit. 
	Always print exception when fatal() is called.

2003-06-01 23:12  Mark Wielaard  <mark@klomp.org>

	* README: Set release version to 0.4.

2003-06-01 22:59  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerConnectionIn.java: Handle negative length
	prefixes (terminates connection).

2003-06-01 21:34  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/: Snark.java, SnarkShutdown.java: Implement
	correct shutdown and read commands from stdin.

2003-06-01 21:34  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/TrackerInfo.java: Check that interval and peers
	list actually exist.

2003-06-01 21:33  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/Storage.java: Implement close().

2003-06-01 21:05  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerState.java: Fix debug logging.

2003-06-01 20:55  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerCoordinator.java: Implement halt().

2003-06-01 20:55  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/ConnectionAcceptor.java: Rename stop() to halt().

2003-06-01 17:35  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerState.java: Drop lock on this when calling
	addRequest() from havePiece().

2003-06-01 14:46  Mark Wielaard  <mark@klomp.org>

	* README, org/klomp/snark/ConnectionAcceptor.java,
	org/klomp/snark/HttpAcceptor.java, org/klomp/snark/Peer.java,
	org/klomp/snark/PeerCheckerTask.java,
	org/klomp/snark/PeerConnectionIn.java,
	org/klomp/snark/PeerConnectionOut.java,
	org/klomp/snark/PeerCoordinator.java,
	org/klomp/snark/PeerState.java, org/klomp/snark/Snark.java,
	org/klomp/snark/SnarkShutdown.java, org/klomp/snark/Storage.java,
	org/klomp/snark/Tracker.java, org/klomp/snark/TrackerClient.java:
	Add debug/log level.

2003-05-31 23:04  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/: PeerCheckerTask.java, PeerCoordinator.java: Use
	just one lock (peers) for all synchronization (even for
	wantedPieces).	Let PeerChecker handle real disconnect and keep
	count of uploaders.

2003-05-31 22:29  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/: Peer.java, PeerConnectionIn.java: Set state to
	null on first disconnect() call. So always check whether it might
	already be null. Helps disconnect check.

2003-05-31 22:27  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerConnectionOut.java: Don't explicitly close
	the DataOutputStream (if another thread is using it libgcj seems to
	not like it very much).

2003-05-30 21:33  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerConnectionOut.java: Cancel
	(un)interested/(un)choke when (inverse) is still in send queue. 
	Remove pieces from send queue when choke message is actaully send.

2003-05-30 19:32  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerState.java: Make sure listener.wantPiece(int)
	is never called while lock on this is held.

2003-05-30 19:00  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerConnectionOut.java: Indentation cleanup.

2003-05-30 17:50  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/Storage.java: Only synchronize on bitfield as
	long as necessary.

2003-05-30 17:43  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/Tracker.java: Identing cleanup.

2003-05-30 16:32  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerState.java: Better error message.

2003-05-30 15:11  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerState.java: Make sure not to hold the lock on
	this when calling the listener to prevent deadlocks. Implement
	handling and sending of cancel messages.

2003-05-30 14:50  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerCoordinator.java: First check if we still
	want a piece before trying to add it to the Storage.

2003-05-30 14:49  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerConnectionOut.java: Implement
	sendCancel(Request). Add cancelRequest(int, int, int).

2003-05-30 14:46  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/Request.java: Add hashCode() and equals(Object)
	methods.

2003-05-30 14:45  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/Peer.java: Fix wheter -> whether javadoc
	comments.  Mark state null immediatly after calling
	listener.disconnected().  Call PeerState.havePiece() not
	PeerConnectionOut.sendHave() directly.

2003-05-25 19:23  Mark Wielaard  <mark@klomp.org>

	* TODO: Add PeerCoordinator TODO for connecting to seeds.

2003-05-23 12:12  Mark Wielaard  <mark@klomp.org>

	* Makefile: Create class files with jikes again.

2003-05-18 22:01  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/: PeerCheckerTask.java, PeerCoordinator.java:
	Prefer to (optimistically) unchoke first those peers that unchoked
	us.  And make sure to not unchoke a peer that we just choked.

2003-05-18 21:48  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/Peer.java: Fix isChoked() to not always return
	true.

2003-05-18 14:46  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/: Peer.java, PeerCheckerTask.java,
	PeerCoordinator.java, PeerState.java: Remove separate Peer
	downloading/uploading states. Keep choke and interest always up to
	date. Uploading is now just when we are not choking the peer. 
	Downloading is now defined as being unchoked and interesting. 
	CHECK_PERIOD is now 20 seconds. MAX_CONNECTIONS is now 24. 
	MAX_DOWNLOADERS doesn't exists anymore. We download whenever we can
	from peers.

2003-05-18 13:57  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerConnectionOut.java: Remove piece messages
	from queue when we are choking.  (They will have to be rerequested
	when we unchoke the peer again.)

2003-05-15 00:08  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerState.java: Ignore missed chunk requests,
	don't requeue them.

2003-05-15 00:06  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/Request.java: Add sanity check

2003-05-10 15:47  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/Snark.java: Add extra '(' to usage message.

2003-05-10 15:22  Mark Wielaard  <mark@klomp.org>

	* README: Set version to 0.3 (The Bakers Tale).

2003-05-10 15:17  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerState.java: Mention received piece in warning
	message.

2003-05-10 03:20  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/: PeerConnectionIn.java, PeerState.java,
	Request.java: Remove currentRequest and handle all piece messages
	from the lastRequested list.

2003-05-09 20:02  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerState.java: Fix nothing requested warning
	message.

2003-05-09 19:59  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerConnectionOut.java: Piece messages are big.
	So if there are other (control) messages make sure they are send
	first. Also remove request messages from the queue if we are
	currently being choked to prevent them from being send even if we
	get unchoked a little later. (Since we will resent them anyway in
	that case.)

2003-05-09 18:33  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/: Peer.java, PeerCheckerTask.java,
	PeerCoordinator.java, PeerID.java: New definition of PeerID.equals
	(port + address + id) and new method PeerID.sameID (only id). These
	are used to really see if we already have a connection to a certain
	peer (active setup vs passive setup).

2003-05-08 03:05  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerState.java: Use Snark.debug() not
	System.out.println().

2003-05-06 20:29  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerState.java: s/noting/nothing/

2003-05-06 20:28  Mark Wielaard  <mark@klomp.org>

	* Makefile: s/lagacy/legacy/

2003-05-05 23:17  Mark Wielaard  <mark@klomp.org>

	* README: Set version to 0.2, explain new functionality and add
	examples.

2003-05-05 22:42  Mark Wielaard  <mark@klomp.org>

	* .cvsignore, Makefile, org/klomp/snark/StaticSnark.java: Enable
	-static binary creation.

2003-05-05 22:42  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/Tracker.java: Disable --ip support.

2003-05-05 21:02  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/: HttpAcceptor.java, PeerCheckerTask.java,
	PeerCoordinator.java, TrackerClient.java: Use Snark.debug() not
	System.out.println().

2003-05-05 21:01  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerConnectionIn.java: Be prepared to handle the
	case where currentRequest is null.

2003-05-05 21:00  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/Snark.java: Improve argument parsing errors.

2003-05-05 21:00  Mark Wielaard  <mark@klomp.org>

	* Makefile: Use gcj -C again for creating the class files.

2003-05-05 09:24  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerState.java: Just clear outstandingRequests,
	never make it null.

2003-05-05 02:55  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/TrackerClient.java: Always retry both first
	started event and every other event as long the TrackerClient is
	not stopped.

2003-05-05 02:54  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/Snark.java: Remove double assignment port.

2003-05-05 02:54  Mark Wielaard  <mark@klomp.org>

	* TODO: Add Tracker TODO item.

2003-05-04 23:38  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/: ConnectionAcceptor.java, MetaInfo.java,
	Snark.java, Storage.java, Tracker.java: Add info hash calcultation
	to MetaInfo.  Add torrent creation to Storage.	Add ip parameter
	handling to Tracker.  Make ConnectionAcceptor handle
	null/non-existing HttpAcceptors.  Add debug output, --ip handling
	and all the above to Snark.

2003-05-04 23:36  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/TrackerClient.java: Handle all failing requests
	the same (print a warning).

2003-05-03 15:46  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/: Peer.java, PeerID.java, TrackerInfo.java: Split
	Peer and PeerID a little more.

2003-05-03 15:44  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/MetaInfo.java: Add reannounce() and
	getTorrentData().

2003-05-03 15:38  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/: PeerCheckerTask.java, PeerCoordinator.java:
	More concise verbose/debug output.  Always use addUpDownloader() to
	set peers upload or download state to true.

2003-05-03 13:38  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/TrackerClient.java: Compile fixes.

2003-05-03 13:32  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/TrackerClient.java: Only generate fatal() call on
	first Tracker access. Otherwise just print a warning error message.

2003-05-03 03:10  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerState.java: Better handle resending
	outstanding pieces and try to recover better from unrequested
	pieces.

2003-05-02 21:33  Mark Wielaard  <mark@klomp.org>

	* Makefile, org/klomp/snark/HttpAcceptor.java,
	org/klomp/snark/MetaInfo.java, org/klomp/snark/PeerID.java,
	org/klomp/snark/Snark.java, org/klomp/snark/Tracker.java,
	org/klomp/snark/TrackerClient.java,
	org/klomp/snark/bencode/BEncoder.java: Add Tracker, PeerID and
	BEncoder.

2003-05-01 20:17  Mark Wielaard  <mark@klomp.org>

	* Makefile, org/klomp/snark/ConnectionAcceptor.java,
	org/klomp/snark/HttpAcceptor.java, org/klomp/snark/Peer.java,
	org/klomp/snark/PeerAcceptor.java, org/klomp/snark/Snark.java: Add
	ConnectionAcceptor that handles both PeerAcceptor and HttpAcceptor.

2003-05-01 18:39  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/PeerCoordinator.java: connected() synchronize on
	peers.

2003-04-28 02:56  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/SnarkShutdown.java: Wait some time before
	returning...

2003-04-28 02:56  Mark Wielaard  <mark@klomp.org>

	* TODO: More items.

2003-04-28 02:56  Mark Wielaard  <mark@klomp.org>

	* org/klomp/snark/Snark.java: Calculate real random ID.

2003-04-27  Mark Wielaard  <mark@klomp.org>

	* snark: Initial (0.1) version.
