{"action":"created","issue":{"url":"https://api.github.com/repos/bitcoin/bitcoin/issues/6588","labels_url":"https://api.github.com/repos/bitcoin/bitcoin/issues/6588/labels{/name}","comments_url":"https://api.github.com/repos/bitcoin/bitcoin/issues/6588/comments","events_url":"https://api.github.com/repos/bitcoin/bitcoin/issues/6588/events","html_url":"https://github.com/bitcoin/bitcoin/pull/6588","id":102930806,"number":6588,"title":"In (strCommand == \"tx\"), return if AlreadyHave()","user":{"login":"dgenr8","id":4284124,"avatar_url":"https://avatars.githubusercontent.com/u/4284124?v=3","gravatar_id":"","url":"https://api.github.com/users/dgenr8","html_url":"https://github.com/dgenr8","followers_url":"https://api.github.com/users/dgenr8/followers","following_url":"https://api.github.com/users/dgenr8/following{/other_user}","gists_url":"https://api.github.com/users/dgenr8/gists{/gist_id}","starred_url":"https://api.github.com/users/dgenr8/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dgenr8/subscriptions","organizations_url":"https://api.github.com/users/dgenr8/orgs","repos_url":"https://api.github.com/users/dgenr8/repos","events_url":"https://api.github.com/users/dgenr8/events{/privacy}","received_events_url":"https://api.github.com/users/dgenr8/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/bitcoin/bitcoin/labels/P2P","name":"P2P","color":"006b75"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2015-08-25T01:51:38Z","updated_at":"2015-10-01T09:59:39Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/bitcoin/bitcoin/pulls/6588","html_url":"https://github.com/bitcoin/bitcoin/pull/6588","diff_url":"https://github.com/bitcoin/bitcoin/pull/6588.diff","patch_url":"https://github.com/bitcoin/bitcoin/pull/6588.patch"},"body":"A live DoS attack observed by several nodes in recent days involved repeated rejection of duplicate transactions.\r\n\r\nAdd a call to AlreadyHave when an unsolicited full tx is received, as was the case in the observed attack. AlreadyHave uses the recentRejects filter.\r\n\r\nI tested this change on mainnet while the actual attack was still underway.\r\n\r\nThe recentRejects filter is cleared when the tip is updated, so nothing stops attacker from re-transmitting a load of rejectable txes after a new block, and in fact our attacker was doing this. But the duplicates are stopped between blocks and the attack could get arbitrarily heavy if multiple attacking peers were involved.\r\n"},"comment":{"url":"https://api.github.com/repos/bitcoin/bitcoin/issues/comments/144683395","html_url":"https://github.com/bitcoin/bitcoin/pull/6588#issuecomment-144683395","issue_url":"https://api.github.com/repos/bitcoin/bitcoin/issues/6588","id":144683395,"user":{"login":"jgarzik","id":494411,"avatar_url":"https://avatars.githubusercontent.com/u/494411?v=3","gravatar_id":"","url":"https://api.github.com/users/jgarzik","html_url":"https://github.com/jgarzik","followers_url":"https://api.github.com/users/jgarzik/followers","following_url":"https://api.github.com/users/jgarzik/following{/other_user}","gists_url":"https://api.github.com/users/jgarzik/gists{/gist_id}","starred_url":"https://api.github.com/users/jgarzik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jgarzik/subscriptions","organizations_url":"https://api.github.com/users/jgarzik/orgs","repos_url":"https://api.github.com/users/jgarzik/repos","events_url":"https://api.github.com/users/jgarzik/events{/privacy}","received_events_url":"https://api.github.com/users/jgarzik/received_events","type":"User","site_admin":false},"created_at":"2015-10-01T09:59:39Z","updated_at":"2015-10-01T09:59:39Z","body":"tested ACK\r\n"}}