diff --git a/libtransmission/peer-io.cc b/libtransmission/peer-io.cc index 68f048190..a32de95ee 100644 --- a/libtransmission/peer-io.cc +++ b/libtransmission/peer-io.cc @@ -109,9 +109,15 @@ std::shared_ptr tr_peerIo::create( io->flush_outbuf_trigger_->set_callback( [weak = io->weak_from_this()] { + // https://github.com/transmission/transmission/issues/7307 + static auto constexpr MinPayloadSize = 128U; + if (auto const ptr = weak.lock()) { - ptr->try_write(SIZE_MAX); + if (ptr->outbuf_.size() >= MinPayloadSize) + { + ptr->try_write(SIZE_MAX); + } } }); tr_logAddTraceIo(io, fmt::format("bandwidth is {}; its parent is {}", fmt::ptr(&io->bandwidth()), fmt::ptr(parent)));