Although the Gossip system is designed so that there should be no loops in the connection graph, the effect of a loop in the graph if a server forwarded every message it received would be catastrophic. Therefore a system to allow a server to decide whether it has seen a message before, was required.
The solution for addServer and deleteServer messages was to check whether the server was actually added or deleted from the list and return a boolean value: true if it should be forwarded, false otherwise. updateRTTs was slightly more difficult since the server would almost certainly have an existing entry, and simply checking if any values were updated does not work if a message older than the current state is received. The solution was for each server to have a counter value which they incremented each time they sent out an updateRTTs message. Since the counter is initialised each time the server starts up, any overflow problems can be resolved just by restarting the server.