Here's a simpler way to improve search results at the ultrapeer level. Just make it prefer dropping sources for files with many sources in the results to dropping the only source for a file in the results. So if it would produce
63 foo.mp3
22 bar.mp3
1 baz.mp3
it should start by dropping some of the foo.mp3 results, and avoid dropping the sole baz.mp3 result.
The spoofed results come in big batches (40+) so they'll tend to be sacrificed first on the altar of bandwidth. And a legit file with many sources will have an active mesh. Even if a given client only gets told of one of the sources because all the others get dropped along the way, from that one source it should learn of the others anyway, if an attempt is made to get that particular file. |