1 #include "RejectedMessage.h"
2 #include "ByteBuffer.h"
5 * Entry for tracking messages that the server rejected. We have to
6 * make sure that all clients know that this message was rejected to
7 * prevent the server from reusing these messages in an attack.
12 Entry *RejectedMessage_decode(Slot *slot, ByteBuffer *bb) {
13 int64_t sequencenum = bb->getLong();
14 int64_t machineid = bb->getLong();
15 int64_t oldseqnum = bb->getLong();
16 int64_t newseqnum = bb->getLong();
17 char equalto = bb->get();
18 return new RejectedMessage(slot,sequencenum, machineid, oldseqnum, newseqnum, equalto == 1);
21 void RejectedMessage::removeWatcher(int64_t machineid) {
22 if (watchset.remove(machineid))
23 if (watchset.isEmpty())
27 void RejectedMessage::encode(ByteBuffer *bb) {
28 bb->put(TypeRejectedMessage);
29 bb->putLong(sequencenum);
30 bb->putLong(machineid);
31 bb->putLong(oldseqnum);
32 bb->putLong(newseqnum);
33 bb->put(equalto ? (char)1 : (char)0);