aboutsummaryrefslogtreecommitdiff
path: root/src/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/client.c')
-rw-r--r--src/client.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/client.c b/src/client.c
index bdfaf2c..c4bd499 100644
--- a/src/client.c
+++ b/src/client.c
@@ -8,6 +8,7 @@
#include "serialize.h"
#include "deserialize.h"
#include "log.h"
+#include "private.h"
#include "queue.h"
@@ -75,6 +76,8 @@ struct MqttClient
bstring willMessage;
int willQos;
int willRetain;
+ /* 1 if client should ignore incoming PUBLISH messages, 0 handle them */
+ int paused;
};
enum MessageState
@@ -674,6 +677,9 @@ static void MqttClientHandleSubAck(MqttClient *client, MqttPacketSubAck *packet)
static void MqttClientHandlePublish(MqttClient *client, MqttPacketPublish *packet)
{
+ if (client->paused)
+ return;
+
if (MqttPacketPublishQos(packet) == 2)
{
/* Check if we have sent a PUBREC previously with the same id. If we
@@ -1115,3 +1121,15 @@ static void MqttClientClearQueues(MqttClient *client)
MqttPacketFree(packet);
}
}
+
+void MqttClientPause(MqttClient *client)
+{
+ assert(client != NULL);
+ client->paused = 1;
+}
+
+void MqttClientResume(MqttClient *client)
+{
+ assert(client != NULL);
+ client->paused = 0;
+}