diff options
author | Marcos Pinto <markybob@dipconsultants.com> | 2009-01-06 02:42:08 +0000 |
---|---|---|
committer | Marcos Pinto <markybob@dipconsultants.com> | 2009-01-06 02:42:08 +0000 |
commit | 42cceabd8ea5ef9c59be33eecb87a0697a6a5e9d (patch) | |
tree | b8b90c457418adcf533b3556059dacc4def55fb4 | |
parent | 6eb413dd1ef948cb3ca4afdbda4b06c9474a6ed6 (diff) | |
download | deluge-42cceabd8ea5ef9c59be33eecb87a0697a6a5e9d.tar.gz deluge-42cceabd8ea5ef9c59be33eecb87a0697a6a5e9d.tar.bz2 deluge-42cceabd8ea5ef9c59be33eecb87a0697a6a5e9d.zip |
fix crash on trying to convert *very* old 0.5 config files
-rw-r--r-- | deluge/core/oldstateupgrader.py | 56 |
1 files changed, 30 insertions, 26 deletions
diff --git a/deluge/core/oldstateupgrader.py b/deluge/core/oldstateupgrader.py index 958d5fc56..f580b8398 100644 --- a/deluge/core/oldstateupgrader.py +++ b/deluge/core/oldstateupgrader.py @@ -76,25 +76,29 @@ class OldStateUpgrader: log.debug("Unable to open 0.5 state file: %s", e) return - new_state = deluge.core.torrentmanager.TorrentManagerState() - for ti, uid in state.torrents.items(): - torrent_path = os.path.join(self.config["config_location"], "torrentfiles", ti.filename) - try: - torrent_info = None - log.debug("Attempting to create torrent_info from %s", torrent_path) - _file = open(torrent_path, "rb") - torrent_info = lt.torrent_info(lt.bdecode(_file.read())) - _file.close() - except (IOError, RuntimeError), e: - log.warning("Unable to open %s: %s", filepath, e) + if type(state).__name__ == 'list': + log.debug("0.5 state file is too old to upgrade:") + return + else: + new_state = deluge.core.torrentmanager.TorrentManagerState() + for ti, uid in state.torrents.items(): + torrent_path = os.path.join(self.config["config_location"], "torrentfiles", ti.filename) + try: + torrent_info = None + log.debug("Attempting to create torrent_info from %s", torrent_path) + _file = open(torrent_path, "rb") + torrent_info = lt.torrent_info(lt.bdecode(_file.read())) + _file.close() + except (IOError, RuntimeError), e: + log.warning("Unable to open %s: %s", filepath, e) # Copy the torrent file to the new location - import shutil - shutil.copyfile(torrent_path, os.path.join(self.config["state_location"], str(torrent_info.info_hash()) + ".torrent")) + import shutil + shutil.copyfile(torrent_path, os.path.join(self.config["state_location"], str(torrent_info.info_hash()) + ".torrent")) - # Set the file prioritiy property if not already there - if not hasattr(ti, "priorities"): - ti.priorities = [1] * torrent_info.num_files() + # Set the file prioritiy property if not already there + if not hasattr(ti, "priorities"): + ti.priorities = [1] * torrent_info.num_files() # Create the new TorrentState object new_torrent = deluge.core.torrentmanager.TorrentState( @@ -112,16 +116,16 @@ class OldStateUpgrader: # Append the object to the state list new_state.torrents.append(new_torrent) - # Now we need to write out the new state file - try: - log.debug("Saving torrent state file.") - state_file = open( - os.path.join(self.config["state_location"], "torrents.state"), "wb") - cPickle.dump(new_state, state_file) - state_file.close() - except IOError, e: - log.warning("Unable to save state file: %s", e) - return + # Now we need to write out the new state file + try: + log.debug("Saving torrent state file.") + state_file = open( + os.path.join(self.config["state_location"], "torrents.state"), "wb") + cPickle.dump(new_state, state_file) + state_file.close() + except IOError, e: + log.warning("Unable to save state file: %s", e) + return # Rename the persistent.state file try: |