diff --git a/libtorrent/src/kademlia/node.cpp b/libtorrent/src/kademlia/node.cpp index 2fb8980b..0bc63f9a 100644 --- a/libtorrent/src/kademlia/node.cpp +++ b/libtorrent/src/kademlia/node.cpp @@ -39,6 +39,7 @@ POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include "libtorrent/io.hpp" #include "libtorrent/bencode.hpp" @@ -348,9 +349,21 @@ namespace void putData_confirm(entry::list_type const& values_list, dht_storage_item& item) { - if( !item.confirmed && !values_list.empty() ) { - item.confirmed = true; - item.next_refresh_time = getNextRefreshTime(); + if( !item.confirmed ) { + BOOST_FOREACH(const entry &e, values_list) { + entry const *sig_p = e.find_key("sig_p"); + if( sig_p && sig_p->type() == entry::string_t && + sig_p->string() == item.sig_p ) { + item.confirmed = true; + break; + } + } + if( !item.confirmed && time(NULL) > item.local_add_time + 60*60*24*2 ) { + item.confirmed = true; // force confirm by timeout + } + if( item.confirmed ) { + item.next_refresh_time = getNextRefreshTime(); + } } } diff --git a/src/clientversion.h b/src/clientversion.h index f551af85..b8d6700d 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -8,7 +8,7 @@ // These need to be macros, as version.cpp's and bitcoin-qt.rc's voodoo requires it #define CLIENT_VERSION_MAJOR 0 #define CLIENT_VERSION_MINOR 9 -#define CLIENT_VERSION_REVISION 24 +#define CLIENT_VERSION_REVISION 25 #define CLIENT_VERSION_BUILD 0 // Set to true for release, false for prerelease or test build