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);