diff --git a/ChangeLog b/ChangeLog index aaf61aeef..e2bcd00c1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -42,6 +42,7 @@ * almost completely changed the storage interface (for custom storage) * added support for hashing pieces in multiple threads + * fix assert when removing a connected web seed * fix bug in tracker timeout logic * switch UPnP post back to HTTP 1.1 * support conditional DHT get diff --git a/src/torrent.cpp b/src/torrent.cpp index 05c30d644..6d852ce16 100644 --- a/src/torrent.cpp +++ b/src/torrent.cpp @@ -5853,8 +5853,14 @@ namespace libtorrent return; } peer_connection* peer = static_cast(web->peer_info.connection); - if (peer) { + if (peer) + { + // if we have a connection for this web seed, we also need to + // disconnect it and clear its reference to the peer_info object + // that's part of the web_seed_entry we're about to remove TORRENT_ASSERT(peer->m_in_use == 1337); + peer->disconnect(boost::asio::error::operation_aborted + , peer_connection_interface::op_bittorrent); peer->set_peer_info(0); } if (has_picker()) picker().clear_peer(&web->peer_info);