You also need to keep track of the GUIDs for other packtes that are not generated by you. And for Query Hits, you must also store the ServentID for a little while, because Push requests will use that.
This way, you know how to send a return packet to the originator. For Pongs and Query Hits, you can see multiple come back with the same GUID - you should not drop those. But for multiple Pings or Queries with the same GUID - yes, those must be dropped.
IMO, this is one of the drawbacks of the coding part of Gnutella. But it ensures the traffic won't go haywire. |