Commit Graph

101 Commits

Author SHA1 Message Date
rakshasa 4431fd1652 * Fixed a regression that threw an exception for torrents with
empty directories.

* When receiving zero length pieces, remove them from the request list.

* Send the interested state before any requests as some clients,
BitTornado 0.7.14 and uTorrent 0.3.0, disconnect if a request has been
received while uninterested.

* WITH_POSIX_FALLOCATE configure macro should check against "yes", not
"no".

* The new priority queue would cause arg torrents to load before
session torrents in some cases. Fixed to perform the session torrent
tasks before loading arg torrents.

* Allow '*' wildcard in filenames when loading torrents.

* Added load, load_run, stop_tied and remove_tied settings which can
be used to scan a directory for new/removed torrents. These torrents
are tied to the lifetime of the torrent file.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@616 e378c898-3ddf-0310-93e7-cc216c733640
2006-01-03 21:43:01 +00:00
rakshasa 5a8a402745 * Minor cleanup in rtorrent.
* Changing priorities of closed torrents caused a crash due to empty
ChunkSelector, fixed.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@615 e378c898-3ddf-0310-93e7-cc216c733640
2005-12-22 03:55:43 +00:00
rakshasa 2c5151def5 * Checked and fixed calls to priority_queue_insert to make sure they
don't end up in an infinite loop.

* Fixed a bug that caused failed chunk downloads to result in
ChunkSelector's forgetting to download them again.

* Added note to the man page about the schedule and schedule_remove
setting.

* Display the number of failed chunks in the client.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@612 e378c898-3ddf-0310-93e7-cc216c733640
2005-12-20 19:12:15 +00:00
rakshasa 4e8e5a18df * Clear the download rate when finishing a torrent.
* Fixed torrent::set_{bind,local}_address(...) so they update
correctly.

* Tweaked the time left display, show minutes instead of seconds.

* Add earlier check on validity of the socket address of
incoming/outgoing connection.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@610 e378c898-3ddf-0310-93e7-cc216c733640
2005-12-18 23:49:00 +00:00
rakshasa e45f05ee98 * Added command scheduler, currently it only calls option handler.
git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@609 e378c898-3ddf-0310-93e7-cc216c733640
2005-12-17 02:50:10 +00:00
rakshasa ca5b5e05ec * Removed ticks for downloads, use the global tick instead.
* Fixed rak::priority_queue.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@608 e378c898-3ddf-0310-93e7-cc216c733640
2005-12-15 22:56:03 +00:00
rakshasa 7cc377b550 * Cleaned up rak::priority_queue.
* Added download time left display, need to tweak it.

* Removed libtorrent/src/download/download_setup.cc.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@607 e378c898-3ddf-0310-93e7-cc216c733640
2005-12-09 05:22:36 +00:00
rakshasa 12ef47da3c * Replaced TaskScheduler with rak::priority_queue.
* Fixed an exception caused by initial hash check not properly
cleaning up HashQueue when canceling.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@606 e378c898-3ddf-0310-93e7-cc216c733640
2005-12-08 21:19:53 +00:00
rakshasa ba7d61b532 * Fixed a buffer overflow when writting to the output buffer. This
would in some rare occasions cause memory to be corrupted. leading to
a crash.

* Added option for setting the http proxy and proccess's umask.

* Save the total uploaded for downloads between sessions.

* Moved from sigc++ to my own lightweight slot class for the task
scheduler. This saves some 5-600kb when compiled with debugging
symbols, 1-200kb without.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@605 e378c898-3ddf-0310-93e7-cc216c733640
2005-12-05 07:59:29 +00:00
rakshasa 32a3619cd8 * Moved Timer to rak/timer.h.
* Added position affinity to ChunkSelector, still needs more work to
make it move forward without needing to finish all pieces.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@604 e378c898-3ddf-0310-93e7-cc216c733640
2005-12-04 21:08:17 +00:00
rakshasa f9614c405d * Added a workaround for the vfat truncate bug. This blocks for a
while, so either it needs some additional hack or make it a configure
option.

* Trigger a storage_error when files fail to resize.

* Fixed a bug in the priority code that caused it to skip some ranges.

* Added a check to make sure a CurlGet object is closed once it is
finished.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@602 e378c898-3ddf-0310-93e7-cc216c733640
2005-12-02 20:07:50 +00:00
rakshasa 98a8fc8638 * Improved error handling for settings. LibTorrent now consistently
throws torrent::input_error and rtorrent catches those and prints good
error messages.

* torrent::set_{bind,local}_address now accepts dns addresses.

* Fixed bug that caused multiple instances of the setting
up/download_rate to change the relative rate, rather than constant.

* Minor change to the way PCB decides to not request more pieces.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@601 e378c898-3ddf-0310-93e7-cc216c733640
2005-11-24 17:21:32 +00:00
rakshasa 93c6369b69 * Added the ability to set the timeout in torrent::Http. Torrent
downloads now have longer timeout than tracker requests.

* Bound the '*' key in tracker list to disable a tracker.

* Added PollKQueue placeholder, implementation will come later.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@598 e378c898-3ddf-0310-93e7-cc216c733640
2005-11-21 19:19:43 +00:00
rakshasa cbbad78b6a * Set "stopped" stated to newly added torrents, so they stay stopped
when restarting the client.

* Renamed Bencode::operator[] to Bencode::get_key.

* Added progress percentage for hash checking.

* Correctly update the delegator priority when loading resume data
with file priorities.

* Don't allow file names with '\0' in them.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@597 e378c898-3ddf-0310-93e7-cc216c733640
2005-11-16 20:46:13 +00:00
rakshasa a97408328a * Cleanup of the API, got rid of "get_" prefix for alot of the calls.
* Tweaked the http get timeout, now it has a 60 second connect timeout
and a 360 second download timeout.

* Moved libtorrent/src/parse/download_constructor to src/download.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@595 e378c898-3ddf-0310-93e7-cc216c733640
2005-11-12 15:31:12 +00:00
rakshasa 3db8179274 * Moved http get's user agent stuff to the client. It now uses
"rtorrent/CLIENT_VERSION/LIBRARY_VERSION".

* Using libcurl's timeout, set to 60 seconds, rather than in
TrackerHttp. This should make libcurl try different IP's.

* Minor cleanup of how file priorities are updated.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@594 e378c898-3ddf-0310-93e7-cc216c733640
2005-11-08 21:14:32 +00:00
rakshasa b28621f839 * Dynamically changes the throttle interval depending on the current
rate and chunk size.

* Changed torrent::download_remove to take a torrent::Download, rather
than the info hash.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@592 e378c898-3ddf-0310-93e7-cc216c733640
2005-11-03 16:26:08 +00:00
rakshasa 89e69adb7a * Added interface for changing download priority.
* More throttle fiddling.

* Pop the currently uploaded piece from the send list.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@591 e378c898-3ddf-0310-93e7-cc216c733640
2005-11-01 19:42:07 +00:00
rakshasa 1a68177eca * More fiddling of the throttle code.
* Fixed a bug that caused idle looping due to epoll_wait timeout using
msecs rather than usecs resolution.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@590 e378c898-3ddf-0310-93e7-cc216c733640
2005-10-31 15:40:50 +00:00
rakshasa 5137aade10 * New throttle implementation, works to a certain degree but still
needs some work.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@588 e378c898-3ddf-0310-93e7-cc216c733640
2005-10-29 00:55:21 +00:00
rakshasa 45781e8dbf * Got rid of some additional internal sigc++ calls.
* Changed print_hhmmss/ddmmyyyy to use a char buffer.

* Added error messages for failed torrent http/file downloads which
includes the url/filename.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@581 e378c898-3ddf-0310-93e7-cc216c733640
2005-10-17 19:19:48 +00:00
rakshasa ad80247ba6 * Improved hash checking, it now stops a torrent if some chunk
mappings fail even though a file has been allocated.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@578 e378c898-3ddf-0310-93e7-cc216c733640
2005-10-10 19:36:12 +00:00
rakshasa 881f515d03 * Scheduled tasks, like hash checking, didn't get called when
downloading with curl on epoll unless sockets triggered events.

* Checking whetever we're interested in a peer's pieces wasn't
finished, doh.

* Don't use shorter timeout for "stopped" tracker request, the client
now makes sure it shuts down within 5 seconds.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@577 e378c898-3ddf-0310-93e7-cc216c733640
2005-10-07 20:01:38 +00:00
rakshasa 94d31cc681 * Fixed various memory leaks/errors.
* Don't increment beyond end when incrementing a entry's completed
counter.

* Don't allow ChokeManager::try_unchoke to succeed when it has been
less than 10 seconds since the last unchoke.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@562 e378c898-3ddf-0310-93e7-cc216c733640
2005-09-17 01:31:30 +00:00
rakshasa 5ada857c3e * Added lazy syncing of chunks.
git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@557 e378c898-3ddf-0310-93e7-cc216c733640
2005-09-10 15:38:34 +00:00
rakshasa c347ccc439 * Use ChunkHandle instead of ChunkListNode*, this will include write
reference counter.

* Get errno message when chunks can't be allocated.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@556 e378c898-3ddf-0310-93e7-cc216c733640
2005-09-09 16:12:29 +00:00
rakshasa c568306a5a * Finished keep-alive in PeerConnectionSeed.
* Display the connection types for a download.

* Fixed HashTorrent so it properly erases the Chunks it holds.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@549 e378c898-3ddf-0310-93e7-cc216c733640
2005-08-31 18:40:18 +00:00
rakshasa a1bffb4526 * Almost completed PeerConnectionSeed, only missing the keep-alive
message.

* Set "connection_seed = seed" by default.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@548 e378c898-3ddf-0310-93e7-cc216c733640
2005-08-30 22:54:16 +00:00
rakshasa 2a1f3e12cc * Renamed read/write stuff to down/up.
* Adding incomplete PeerConnectionSeed.

* For every new peer connection it would traverse the local bitfield
to check if it was zero'ed, instead of using a cached value. Forgot to
change over when changing it from the BitFieldExt to the normal class.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@547 e378c898-3ddf-0310-93e7-cc216c733640
2005-08-29 18:39:34 +00:00
rakshasa a28ed1c96b * File progress wasn't being updated as the index range iterator was
off by one.

* Removed ProtocolChunk, moved the functions to PeerConnectionBase,
remains to clean it up.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@546 e378c898-3ddf-0310-93e7-cc216c733640
2005-08-27 15:44:56 +00:00
rakshasa 7f2b66d601 * Add includes of headers for select.
* Make initialization and cleanup of display::Canvast safer.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@533 e378c898-3ddf-0310-93e7-cc216c733640
2005-08-17 16:58:07 +00:00
rakshasa 407f3383f0 * Automagically set the max open sockets and files to resonable values
according to sysconf(_SC_OPEN_MAX).

* Added timeout to torrent::TrackerHttp so connections that are left
open, but with no data being transmitted get closed after a resonable
time.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@524 e378c898-3ddf-0310-93e7-cc216c733640
2005-08-12 16:05:54 +00:00
rakshasa 202ed7928b * Fixed a compiler warning.
* Tell libcurl to follow redirects.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@521 e378c898-3ddf-0310-93e7-cc216c733640
2005-08-10 12:20:17 +00:00
rakshasa 89a090111d * Added support for variable sized fd_set's, this should remove the FD_SETSIZE limit.
git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@512 e378c898-3ddf-0310-93e7-cc216c733640
2005-08-01 16:20:34 +00:00
rakshasa 3df7567ddf * Rewrote 'select' based polling in the client and finished the
'epoll' code. The client selects whichever is available on the current
platform.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@510 e378c898-3ddf-0310-93e7-cc216c733640
2005-07-27 18:39:57 +00:00
rakshasa 91f4f022a9 * Finished implementing epoll support in the library. The client side
is abit hacky and normal select based polling is temporarily disabled.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@509 e378c898-3ddf-0310-93e7-cc216c733640
2005-07-26 16:38:15 +00:00
rakshasa 424a20b3f5 * Changed the API to support different Poll objects and made
PollSelect available. Started work on PollEPoll.

* Fixed a bug that caused blank characters to be inserted into the
tracker request url.

* Added display of the options field in the peer info view.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@508 e378c898-3ddf-0310-93e7-cc216c733640
2005-07-25 15:28:03 +00:00
rakshasa 81c36a7d96 * Using SocketAddress instead of std::string/uint16_t for peer
addresses.

* Tracker key is now an uint32_t instead of std::string.

* Added client address to UDP tracker requests.

* Added a check for FD_SETSIZE and _SC_OPEN_MAX in the client. A
warning is issued if max open files and sockets exceed either of these.

* Cleaned up the API, propably quite close to what will be in the
slush'ed API.

* Swapped emit and close order in TrackerHttp.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@499 e378c898-3ddf-0310-93e7-cc216c733640
2005-07-18 17:22:17 +00:00
rakshasa 7a9010445b * Cleaned up torrent::ProtocolBuffer.
* Added enums to torrent::Tracker to allow the client to check
whetever the tracker is an UDP or HTTP tracker.

* Added "enable_udp_trackers" setting for disabling the use of UDP
trackers, enabled by default.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@498 e378c898-3ddf-0310-93e7-cc216c733640
2005-07-13 18:51:19 +00:00
rakshasa d02ded1d4c * Changed function calls in torrent::Download to be const.
* Cleaned up the code that handles printing of download stats, uses a
char* for buffer for output more flexible concatenation. Closed
torrents are displayed correctly now.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@497 e378c898-3ddf-0310-93e7-cc216c733640
2005-07-13 13:05:08 +00:00
rakshasa 568dcc0b91 * More work on support for UDP tracker.
git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@493 e378c898-3ddf-0310-93e7-cc216c733640
2005-07-11 17:44:28 +00:00
rakshasa 8ca61a79ac * Saves file priorities along with fast-resume data.
* Cleaned up the shutdown code, moved some unnessesary stuff out of
the main loop.

* Made a TrackerBase and an empty TrackerUdp class. The proper
Tracker* class is selected based on the url.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@492 e378c898-3ddf-0310-93e7-cc216c733640
2005-07-09 18:28:57 +00:00
rakshasa 26a7907f0a * Cleaned up torrent::Rate and moved it to the API. Changed various
parts of the API to return torrent::Rate instead of specific functions
for each stat.

* Use 600 second time span for peer rates.

* Added core::DownloadFactory which allows for an async http get and
changing of settings. This will allow the implementation of a
configuration screen when pressing "return", while the client is
downloading or finished downloading a torrent file.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@491 e378c898-3ddf-0310-93e7-cc216c733640
2005-07-09 15:28:56 +00:00
rakshasa fc8ca7df20 Fixed bug that cause exception to be thrown when erasing a download.
Moved to using SocketAddress within src/net.

Enabled SocketManager.

Changed API to use uint32_t instead of int.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@485 e378c898-3ddf-0310-93e7-cc216c733640
2005-07-04 16:14:13 +00:00
rakshasa 0588e66eaf Added license exception for linking toward OpenSSL.
Disabled Mozilla's NSS SHA1 code and added OpenSSL SHA1, use NSS if
you need Debian-strict GPL compliance. Added note in README.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@484 e378c898-3ddf-0310-93e7-cc216c733640
2005-07-01 22:41:16 +00:00
rakshasa 758bbc9faf Fixed memory leak of PeerConnection::m_read and
PeerConnection::m_write.

Moved src/net/protocol_* to src/peer/.

Moved over to using PeerConnectionBase and created factory class and
setting for seeder/leecher.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@483 e378c898-3ddf-0310-93e7-cc216c733640
2005-07-01 15:38:39 +00:00
rakshasa 98ad8e8791 Cleaned up ui::Root, fixed updating and hiding status bar.
Using displayScheduler for updating windows, much more efficient.

Added saving of some parts of the state of torrents.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@482 e378c898-3ddf-0310-93e7-cc216c733640
2005-06-30 16:42:22 +00:00
rakshasa d04adf81ae The client is now responsible for sending completed to tracker, fixes
the problem where doing hash checking of completed torrents would
cause wrong messages to be sent.

Added option to the client for opening a random port in the supplied
port range.

Cleaned up ui::Download and ui::DownloadList handling of throttle keys
and status bar.

Added 60s timeout for handshakes.

Added ignore key function to input::Bindings.

Made the time span of torrent::Rate configurable.

Seperate torrent::Rate object for quick and slow time span in
torrent::ThrottleControl. Also limited the amount the throttle could
over-allocate per tick, not completely fixed.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@480 e378c898-3ddf-0310-93e7-cc216c733640
2005-06-28 20:57:01 +00:00
rakshasa 2c5ce1989a Added setting for session directory.
Added support for quotation in settings.

Added key for changing the priority of all files in a torrent.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@477 e378c898-3ddf-0310-93e7-cc216c733640
2005-06-26 19:51:20 +00:00
rakshasa bc27fd19cb Cleaned up option_handler_rules.*, it now uses the slot_map_* properly.
Erases the screen upon quit.

Added option for checking the hash for completed downloads.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@471 e378c898-3ddf-0310-93e7-cc216c733640
2005-06-21 16:23:34 +00:00