From fd7d1ce67533baa27ac2ba797fa2b2ca2b04bdff Mon Sep 17 00:00:00 2001 From: Marcos Pinto Date: Sun, 25 Nov 2007 23:59:19 +0000 Subject: [PATCH] try to catch invalid handle in deluge_core --- src/deluge_core.cpp | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/src/deluge_core.cpp b/src/deluge_core.cpp index 829696e25..699c43dfb 100644 --- a/src/deluge_core.cpp +++ b/src/deluge_core.cpp @@ -1787,23 +1787,26 @@ static PyObject *torrent_replace_trackers(PyObject *self, PyObject *args) if (PyErr_Occurred()) return NULL; - if (M_torrents->at(index).handle.is_valid()){ - std::vector trackerlist; - std::istringstream trackers(tracker); - std::string line; - while (std::getline(trackers, line)) { - libtorrent::announce_entry a_entry(line); - trackerlist.push_back(a_entry); + try { + if (M_torrents->at(index).handle.is_valid()){ + std::vector trackerlist; + std::istringstream trackers(tracker); + std::string line; + while (std::getline(trackers, line)) { + libtorrent::announce_entry a_entry(line); + trackerlist.push_back(a_entry); + } + if (trackerlist.empty()){ + std::vector empty; + M_torrents->at(index).handle.replace_trackers(empty); + } + else{ + M_torrents->at(index).handle.replace_trackers(trackerlist); + M_torrents->at(index).handle.force_reannounce(); + } } - if (trackerlist.empty()){ - std::vector empty; - M_torrents->at(index).handle.replace_trackers(empty); - } - else{ - M_torrents->at(index).handle.replace_trackers(trackerlist); - M_torrents->at(index).handle.force_reannounce(); - } - } + } + catch (libtorrent::invalid_handle&) {} Py_INCREF(Py_None); return Py_None; } static PyObject *torrent_prioritize_files(PyObject *self, PyObject *args)