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 RejectedMessage::~RejectedMessage() {
26 void RejectedMessage::removeWatcher(int64_t machineid) {
27 if (watchset->remove(machineid))
28 if (watchset->isEmpty())
32 void RejectedMessage::encode(ByteBuffer *bb) {
33 bb->put(TypeRejectedMessage);
34 bb->putLong(sequencenum);
35 bb->putLong(machineid);
36 bb->putLong(oldseqnum);
37 bb->putLong(newseqnum);
38 bb->put(equalto ? (char)1 : (char)0);