forked from premiere/premiere-libtorrent
c2277b3ea5
A traversal can be done while there are still outstanding queries (i.e. m_invoke_count is non-zero) if K good responses have already been received and none of the outstanding queries are closer than the nodes which have responded. When this happens and the outstanding queries eventually complete or timeout they call traversal_algorithm::failed() or traversal_algorithm::finished() as usual which will cause traversal_algorithm::done() to be called yet again. The fix is to always set the done flag on all queried observers in traversal_algorithm::done() so that the observers will refrain from calling back into the traversal. This also makes traversal_algorithm::abort() redundant since this was the only thing it did before it called into done(). |
||
---|---|---|
.. | ||
dht_observer.hpp | ||
dht_storage.hpp | ||
dht_tracker.hpp | ||
direct_request.hpp | ||
dos_blocker.hpp | ||
find_data.hpp | ||
get_item.hpp | ||
get_peers.hpp | ||
item.hpp | ||
msg.hpp | ||
node.hpp | ||
node_entry.hpp | ||
node_id.hpp | ||
observer.hpp | ||
refresh.hpp | ||
routing_table.hpp | ||
rpc_manager.hpp | ||
traversal_algorithm.hpp |