diff --git a/src/dhtrunner.cpp b/src/dhtrunner.cpp index 5b790c80bde200bf6cb4b7c23a2bc6524664ec4a..62b290afb88f661b8f9e077eb18d7dc3da6a69c4 100644 --- a/src/dhtrunner.cpp +++ b/src/dhtrunner.cpp @@ -163,14 +163,15 @@ DhtRunner::run(const Config& config, Context&& context) net::PacketList ret; { std::lock_guard<std::mutex> lck(sock_mtx); - auto maxSize = net::RX_QUEUE_MAX_SIZE - pkts.size(); - while (rcv.size() > maxSize) { - if (logger_) - logger_->e("Dropping packet: queue is full!"); + rcv.splice(rcv.end(), std::move(pkts)); + size_t dropped = 0; + while (rcv.size() > net::RX_QUEUE_MAX_SIZE) { rcv.pop_front(); + dropped++; + } + if (dropped and logger_) { + logger_->w("[runner %p] dropped %zu packets: queue is full!", this, dropped); } - - rcv.splice(rcv.end(), std::move(pkts)); ret = std::move(rcv_free); } cv.notify_all();