tags 506748 patch
thanks

Greetings!

A group at the MIT Student Information Processing Board spent some time looking at this bug during our Lenny hackathon BSP, and we came to the following conclusions:

1. This bug is due to a type checking problem: running the same test case on more recent upstream versions produces a vaguely unhelpful error message, presumably because hashes returned by "download_list default" aren't valid arguments to "fi.get_filename_last", not being FileListIterators. 2. The bug was fixed somewhere between upstream SVN revisions 1038 and 1054, which represent a significant overhaul of the xmlrpc mechanism, and wouldn't necessarily be appropriate to backport into this version. 3. The simplest way to remove the crash bug would be to remove the RPC altogether, either by: a. Causing apply_fi_filename_last() in command_file.cc to throw a torrent::input_error b. Removing the ADD_CFI_VOID("filename_last"... declaration from command_file.cc We were unable to find any situation in which the RPC was able to provide useful results, so removing it seems like removing it wouldn't be a significant limitation. Anyone who needs this functionality can upgrade to a more recent version manually. We've attached a patch we've tested that implements the first option.

Either way, it doesn't seem to us like this should be a release critical bug, not affecting normal users of rtorrent and not causing problems to people who invoke RPCs properly.

~Xavid
MIT Student Information Processing Board

Attachment: rtorrent-0.7.9-bug506748.patch
Description: Binary data




=
=
=
=
=
=
=
=
=
=
=
=
=
=
========================================================================

--- rtorrent-0.7.9-orig/src/command_file.cc 2007-10-21 00:24:54.000000000 -0400 +++ rtorrent-0.7.9-modified/src/command_file.cc 2008-12-13 22:37:09.000000000 -0500
@@ -88,6 +88,8 @@

 torrent::Object
 apply_fi_filename_last(torrent::FileListIterator* itr) {
+ throw torrent::input_error("Command fi.filename_last not available in this version of rTorrent.");
+
   if (itr->file()->path()->empty())
     return "EMPTY";

Reply via email to