bitcoin/bitcoin — pull request #4547 by kazcw (2014-07-16 22:39:07+00:00)
Title: prevent peer flooding request queue for an inv

mapAlreadyAskedFor does not keep track of which peer has a request queued for a particular tx. As a result, a peer can blind a node to a tx indefinitely by sending many invs for the same tx, and then never replying to getdatas for it. Each inv received will be placed 2 minutes farther back in mapAlreadyAskedFor, so a short message containing 10 invs would render that tx unavailable for 20 minutes.

This is fixed by disallowing a peer from having more than one entry for a particular inv in mapAlreadyAskedFor at a time.