diff --git a/libtorrent/src/kademlia/node.cpp b/libtorrent/src/kademlia/node.cpp index 07f3a36d..d1099bb6 100644 --- a/libtorrent/src/kademlia/node.cpp +++ b/libtorrent/src/kademlia/node.cpp @@ -1092,8 +1092,8 @@ void node_impl::incoming_request(msg const& m, entry& e) return; } - if (msg_keys[mk_height]->int_value() > getBestHeight() ) { - incoming_error(e, "future messages not allowed"); + if (msg_keys[mk_height]->int_value() > getBestHeight() && getBestHeight()) { + incoming_error(e, "height > getBestHeight"); return; } diff --git a/src/twister.cpp b/src/twister.cpp index 5f286c8c..c9b5675a 100644 --- a/src/twister.cpp +++ b/src/twister.cpp @@ -557,7 +557,7 @@ bool acceptSignedPost(char const *data, int data_size, std::string username, int } else if( !validatePostNumberForUser(username, k) ) { sprintf(errbuf,"too much posts from user '%s' rejecting post", username.c_str()); - } else if( height < 0 || height > getBestHeight() ) { + } else if( height < 0 || (height > getBestHeight() && getBestHeight()) ) { sprintf(errbuf,"post from future not accepted (height: %d > %d)", height, getBestHeight()); } else if( msg.size() && msg.size() > 140 ) { @@ -617,7 +617,9 @@ bool validatePostNumberForUser(std::string const &username, int k) CBlockIndex* pblockindex = mapBlockIndex[hashBlock]; - if( k < 0 || k > 2*(getBestHeight() - pblockindex->nHeight) + 10) + if( k < 0 ) + return false; + if( getBestHeight() && k > 2*(getBestHeight() - pblockindex->nHeight) + 20) return false; return true;