2009-06-18  Jari Sundell <sundell.software@gmail.com>

	* Add support for any number of custom download values identified by
	string keys.
	d.set_custom=key,value
	d.get_custom=key (returns "" if not set)
	d.get_custom_throw=key (returns error if not set)

	* With this patch, rtorrent will detect and complain about .torrent
	files with broken bencode representation (e.g. where the order of
	dictionary keys is not lexicographic).

	* Choose a different poll type using the RTORRENT_POLL env. variable
	(if it's implemented), probably only useful as RTORRENT_POLL=select.

	* Add the commands execute_capture and execute_capture_nothrow that
	work like their other counterparts but return the OUTPUT (stdout) of
	the given command.

	* Fixes the code that detects which peer was sending bad data. Peers
	are then automatically banned after sending three bad chunks.

	* Stops rtorrent from always creating and resizing ALL files, even
	those set to "off". Files will still be created, but with a size of
	zero, until a part of them is getting downloaded. This helps with
	filesystems that don't support sparse files (such as FAT, HFS+, and
	others).

	* Fix inefficient piece distribution due to linear chunk request
	strategy by randomizing position every few (on average 32) chunks, see
	ticket #190.

	* Enable custom throttles, both per-download or per-IP. See
	http://libtorrent.rakshasa.no/ticket/20 for info and instructions.

	* Fix crashes/errors due to rtorrent attempting to pass non-utf-8
	strings to xmlrpc.

	* Added support for using posix_fallocate on newly resized files.

	* Include locally available chunks in the "chunks seen" statistics for
	completed/distributed copies. Patch by Josef Drexler.

	* Added 'd.get_bitfield' command for retrieving the bitfield in hex
	format. Patch by Thomas Rosner.

	* Fixed include headers for gcc-4.4.0. Patch by 'kloeri'.

2008-11-19  Jari Sundell <sundell.software@gmail.com>

	* Work-around for OpenBSD's broken sys/event.h, which fails to compile
	if it's the first (or only) included header. (Ticket #1470)

	* Fixes compilation with old libcurl versions. (Ticket #1471)

	* Fix compile error on systems that lack mincore(2).

	* Fixes a crash in epoll due to libcurl/c-ares bug:
	PollEPoll::modify(...) epoll_ctl call failed.

	* Enforce an http transfer timeout when libcurl fails to honor
	it. Also set a 5-minute timeout for (previously unlimited) torrent
	transfers and fixes the argument type for curl_easy_setopt values.

	* Allows bandwidth throttles to work without floating point support.

	* Added the 'd.add_peer=host[:port]' command to manually add a peer
	(not for torrents marked "private"), port 6881 is the default.

	* Allows banning the selected peer with "B". No unbanning is possible
	yet.

	All the above patches were written by Josef Drexler.


	* Added system.method.{insert,erase} commands that allows
	user-specified commands. E.g "system.method.insert=foo,print=Bar".

	* Differentiate between commands that have no target, and those that
	take generic targets, when using XMLRPC.

	* Added 'event.download.inserted_{new,session}' that are triggered
	when a new or a session torrent is added. Ticket #1516.

	* Added 'system.method.get', 'ui.current_view.set' and 'group.insert'
	commands.

	* Enabled different ratio settings for different groups of
	downloads.

	* Added 'view.persistance' command that makes downloads inserted into
	that view persist across sessions. Only call on user-created views.

	* Added	'ratio.*' commands that call the 'group.seeding.ratio.*'
	equivalents.

	* Changed torrent::DownloadList::close_directly() so doesn't save the
	session if the underlying file/directory has been moved or
	removed. This change, in addition to calling 'd.set_directory=' before
	'execute=mv,...', as previously shown in the examples, will make
	rtorrent behave correctly when 'check_hash=no' is set. 

2008-10-15  Jari Sundell <jaris@student.matnat.uiu.no>

	* Added a work-around for the stdin kqueue bug in MacOSX. Original
	patch by Josef Drexler.

	* Numerous bug-fixes and patches by Josef Drexler.


2008-05-13  Jari Sundell <jaris@student.matnat.uio.no>

	* Fixed EINTR handling in execute command. Patch by anonymous.

	* Fixed a couple of memory leaks in xmlrpc.cc. Reported by Novik.

	* Initial seeding support added. Patch by Josef Drexler.

2008-04-29  Jari Sundell <jaris@student.matnat.uio.no>

	* Added {get/set}_xmlrpc_size_limit to allow the user to specify
	larger buffer size for handling direct loading of torrents through
	xmlrpc.	

	* Allow file and tracker targets with the compact xmlrpc syntax,
	e.g. "<infohash>:f<id>".

	* Fixed an alignment bug in the DHT code.

	* Replaced View sort and filter code with commands, allowing the user
	to create custom download list views.

	* Fixed a memory corruption bug in scgi_task.cc.

2008-01-29  Jari Sundell <jaris@student.matnat.uio.no> 
	* Added support for DHT. Patch by Josef Drexler.

	* Cleanup and refactoring of the API.

	* Enable PEX by default.

	* Added 'p.multicall', 'd.set_directory_base', 
	'get_{up,down}_{rate,total}', and more.

	* Support for lazy creation and resize of file has been added. This also
	ensures deleted files are properly detected and the user notified. The 
	files can be recreated by using the ^E key.

	* Keep a cache listing all, including failed, torrent loads and the 
	mtimes of those files. This is used to ensure that e.g. the watch dir 
	does not try to load bad/duplicate torrents, in addition to optimizing 
	the pruning of those already loaded.

	* Fixed a crash in apply_on_ratio when an iterator got invalidated by 
	erasing the download currently pointed to.

	* Fixed the --with-xmlrpc-c autoconf check so that you can pass an 
	alternative path to an xmlrpc-c-config script.

	* Fixed a race condition in the handshake read/write code. Patch by 
	Josef Drexler.

	* Fixed a bug causing empty PEX messages to stall piece writing. Patch 
	by Josef Drexler.

2007-10-25  Jari Petter Sundell <jaris@student.matnat.uio.no>
	
	* Improved detection of unnecessary handshakes to decrease 
	the load when using PEX.

	* Limit the number of PEX connections to 8 per download.

	* Fixed several bugs in PEX.

	* Fixed several sigc++ 2.1 compile errors.

	* Print to the log when close_on_diskspace gets triggered.

2007-09-07  Jari Petter Sundell <jaris@student.matnat.uio.no>

	* Several new commands for use with XMLRPC. See the SVN log for a 
	complete list.

	* Fixed the wrong tracker requests being sent when finishing a torrent.

	* Added Peer Exchange support, enable with the "peer_exchange=yes" 
	option. Patch by Josef Drexler.

	* Don't skip the last line in rc files missing the final newline. Patch 
	by Jussi Judin.

	* The torrent is no longer closed on finished for on_finished commands 
	as it did last release. Instead d.set_directory causes the download to 
	call close_directly to allow moving of finished torrents.

	* Added "close_on_ratio".

	* Allow commands to be appended to "{stop,close}_on_ratio", so you can 
	e.g. erase a torrent that has finished.

	* Set "encryption=allow_incoming,prefer_plaintext,enable_retry" by 
	default.
	
2007-08-16  Jari Petter Sundell <jaris@student.matnat.uio.no>

	* Renamed all commands to from e.g "get_d_*" to "d.get_*". Remember to 
	update your rc file.

	* Removed support for appending multiple commands to 'schedule'. 
	Multiple commands must now be quoted, e.g "print=cmd1 ;print=cmd2".

	* Enabled 'max_downloads_div' by default. This should give better 
	connection responsiveness if a reasonable download throttle rate is set.

	* Added a default low_diskspace check for 500MB. It is scheduled with 
	the id "low_diskspace".

	* Allow lists as arguments in commands by using '{' and '}'. The list 
	will be recursed and all '$' will be called, while '~' will only be 
	expanded when in the first element in the list. E.g "execute = 
	touch,{~/tmp/,$get_client_version=}".

	* Added 'execute_log' for logging the result of calls to 'execute'.

	* Dynamically sized SCGI read buffer, system.multicall should work 
	properly now.

	* Added 'call_download' that takes a view as the first parameter and 
	then a list of commands. It will return a list of lists containing the 
	results from those commands.

	* Allow loading torrents from https and ftp uri's.

2007-08-01  Jari Petter Sundell <jaris@student.matnat.uio.no>

	* Improved XMLRPC support, including support for 64bit ints, removed 
	defective FastCGI support.

	* Added a large number of commands for use with XMLRPC. See 
	system.listMethods for a complete list.

	* Fixed a bug where the tracker re-announce interval for the previous 
	tracker was being used. Now the announce intervals for each tracker is 
	stored seperately.

	* Commands that pass through rpc::parse_command_* now support inline 
	commands that start with a '$'. E.g 'print="$get_ip="'.

	* Allow ';' as a separator for multi-command lines. Not recognized by 
	the string parser, so it must be preceded by whitespace.

	* Allow escaping of newlines in the resource file.

	* The "load_*" commands now allow a list of commands to be appended. 
	These commands will be called on the newly loaded download. 

2007-06-20  Jari Petter Sundell <jaris@student.matnat.uio.no>

	* The old option handler has been rewritten.

	* Added support for SCGI rpc calls.

	* Added "http_ca{path/cert}" options. Patch by Johan Gunnarsson

	* Added configure options that allow building universal binaries.

	* Fixed a bug that caused piped requests to be lost.

2007-03-29  Jari Petter Sundell <jaris@student.matnat.uio.no>

	* Allow properly quoted and escaped arguments to options. F.ex 
	"schedule = wd,10,10,load_start=~/Foo\ Bar/*.torrent" and "schedule = 
	wd,10,10,load_start="~/Foo Bar/*.torrent"" now works.

	* Added unlimited setting for max unchoked in ChokeManager and made it 
	the default. Set with 0 as a temporary hack.

	* Don't resize empty files used for creating directories. Fixed for the 
	n'th time.

2007-03-25  Jari Petter Sundell <jaris@student.matnat.uio.no>

	* Added support for dvorak keyboard layout. Patch by matled at gmx.net.

	* The STOPPED request was being canceled when a download was closed 
	with f.ex ^K, moved it so it only happens when the download is removed.

	* Added support for dvorak keyboard layout. Patch by matled at gmx.net.

	* The STOPPED request was being canceled when a download was closed wit
	f.ex ^K, moved it so it only happens when the download is removed.

	* The "tos" option was parsing the hex value with unit == 0, which 
	caused it to always zero it.

	* Forgot to check if there were any torrents hashing before starting new
	non-fast-resume checks, which would cause multiple torrents to be hashed
	at once.

	* File progress is now updated when hash_check is called, and no longer 
	cleared on close. This fixes a bug with >100% file progress being 
	reported and optimizes file progress updating for completed torrents.

	* Disabled IPv6 http requests so the trackers won't think we support it
	and enabled curl's support for gzip encodings.

	* Added 'seeding' view on key 8.

	* Added "max_{up,down}loads_{div,global}" options. See the man page for 
	more information.

	* Added support for dvorak keyboard layout. Patch by matled at gmx.net.

	* The STOPPED request was being canceled when a download was closed with
	f.ex ^K, moved it so it only happens when the download is removed.

2007-01-26  Jari Petter Sundell <jaris@student.matnat.uio.no>

	* Added "max_open_http" option that limits the max number of 
	simultaneous http connections. By default set to 32.

	* Directory structured view of the file list. The '/' key collapses
	directories, while the right arrow or ^F enters the selected directory.
	Changing the priority for a directory changes all contained files.

	* Replaced old autoconf scripts with pkg-config checks. If the curl or
	openssl check now fails, make sure pkg-config can find them.

	* Added "create_link" and "delete_link" options which apply to a 
	download. These must be used with the new "on_*" options, so as to 
	allow you to create symbolic links when starting, stopping, finishing, 
	etc, a torrent.

2006-12-28  Jari Petter Sundell <jaris@student.matnat.uio.no>

	* Added dired view of files and allow priority to be changed for all 
	files within a directory.

	* Allow initial hash checking to be paused and resumed.

	* Minor bug fixes.

2006-12-13  Jari Petter Sundell <jaris@student.matnat.uio.no>

	* Added "tracker_numwant", "encryption", "connection_proxy",
	'preload_type', 'preload_min_size', 'preload_required_rate',
	"split_file_size", "split_suffix", "max_file_size",

	* Encrypted (obfuscated) handshake and connection support. Patch by 
	Josef Drexler, public domain as per earlier agreement.

	* Append '&' instead of '?' to the tracker url when the url already
	has '?'.

	* Added support for tunneling through HTTP 1.0 proxies.

	* Cut the size of the libtorrent binary from 925kb to 617kb by using 
	GCC's symbol export attributes and changes to how exceptions are
	constructed.

	* Moved client info, etc, from rtorrent to libtorrent and cleaned up 
	the API.

	* Support for the CANCEL piece request message. (Finally)

	* Allow the user to configure the max file size a torrent is allowed 
	to create, and the option to split large files.

2006-10-27  Jari Petter Sundell <jaris@student.matnat.uio.no>

	* Use the actual completed torrent data in the 'downloaded' field
	sent to	the tracker, rather than the download rate total. This should
	fix someproblems with too much downloaded data being reported to the 
	tracker.

2004-11-21  Jari Petter Sundell  <jaris@student.matnat.uio.no>

	* library: Properly update interested/not interested depending on
	file priorities.

2004-11-15  Jari Petter Sundell  <jaris@student.matnat.uio.no>

	* library: Variable pipe size depending on download speed.

2004-10-27    <jaris@ifi.uio.no>

	* client: On 'T' key, retrive 250 peers from tracker.

	* library: Added tracker numwant and key.

2004-10-02  Jari Petter Sundell  <jaris@student.matnat.uio.no>

	* torrent: New class for selecting the chunks to download.

	* client: File priority added.

2004-09-25  Jari Petter Sundell  <jaris@student.matnat.uio.no>

	* client: View files in torrent and their size. Will be used for priority later.

2004-09-19  Jari Petter Sundell  <jaris@student.matnat.uio.no>

	* all: Forgotten to update this file for a while. Lot's of stuff happen with the code. ;)

	* client: Added resume of torrents and snubbing.

2004-08-23  Jari Petter Sundell  <jaris@student.matnat.uio.no>

	* torrent/data: Wrote new and cleaner files to chunk abstraction. Much prettier.

2004-08-14    <jaris@ifi.uio.no>

	* torrent/tracker: New tracker request code. Modular using sigc++
	and ready for extension.

	* torrent: Moved over to using libcurl for http downloads.

2004-08-07    <jaris@ifi.uio.no>

	* configure: Added sigc++-2.0 to dependencies.

	* torrent/url: Shiny new http interface with sigc++ signals.

2004-08-05    <jaris@ifi.uio.no>

	* client: Added support for http urls.

	* delegator: Fixed a bug that caused us to request pieces the peer
	didn't have. (DOH!)

2004-08-04    <jaris@ifi.uio.no>

	* bitfield: Clean up bitfield class and opimized .notIn().

	* torrent: Finished http class, testing remains.

2004-08-03      <jaris@ifi.uio.no>

	* torrent: Don't throw on zero length piece messages. Why do they
	send these?

2004-07-28    <jaris@ifi.uio.no>

	* torrent: Fixed a few bugs in the throttle and added min chunk
	size.

2004-07-25    <jaris@ifi.uio.no>

	* torrent: Fixed bug that made it skip sending the stop message to
	the tracker when quiting.

	* torrent: Changed stdint.h to inttypes.h and made it easy to
	disable execinfo.h in client.

	* torrent: Added throttle with tree structure. Bandwidth
	delegation needs work.

2004-07-20    <jaris@ifi.uio.no>

	* torrent: Using deque instead of list to increase performance.

	* torrent: Don't close the connection if errno == EINTR.

	* client: Added view of the exceptions log.

2004-07-11    <jaris@ifi.uio.no>

	* torrent: Choosing new chunks to download according to how many
	we see.

2004-07-10    <jaris@ifi.uio.no>

	* torrent: BitField::allSet() now works right, fixes problems with
	finished peers not being disconnected.

	* client: No longer breaks when it receives resize interrupts
	during select.

2004-07-08    <jaris@ifi.uio.no>

	* torrent: Fixed mangling of outgoing commands.

2004-07-07    <jaris@ifi.uio.no>

	* torrent: Cleaned up the BitField class.

	* client: Cleaned up the UI.

2004-07-04    <jaris@ifi.uio.no>

	* client: Added scrolling when selecting peers or downloads. View
	the local bitfield.

	* torrent: Fixed some unchoking bugs and made it better at
	choosing whom to unchoke.

2004-06-29    <jaris@ifi.uio.no>

	* torrent: Cleaned up PeerConnection::write and made it buffer
	more commands in one send.

2004-06-27    <jaris@ifi.uio.no>

	* torrent: Added automatic creation of directories.

	* configure: Added tests for OpenSSL's crypto lib.

2004-06-26    <jaris@ifi.uio.no>

	* client: Made the display code more maintainable. Added chunks
	seen amongst peers
