diff options
Diffstat (limited to 'src/client.c')
| -rw-r--r-- | src/client.c | 18 |
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; +} |
