toad wrote: > Because messages in the transfer queue generally are sent after all > other messages, and are therefore higher latency?
That might be true for the real code, but in the simulation code we keep two queues, one for transfers and one for searches. Each time we build a packet (Peer.pack()), we alternate between putting transfers in first and putting searches in first. This interleaves transfers and searches without giving priority to either - I know it's important for searches to be low-latency, but if we gave them strict priority over transfers it would be possible for a transfer to keep getting pre-empted by searches until it timed out. This change just moves DataInserts and ChkDataFounds from the search queue to the transfer queue, so they never get overtaken by their own data blocks. Cheers, Michael