aboutsummaryrefslogtreecommitdiff
path: root/src/client.c
diff options
context:
space:
mode:
authorOskari Timperi <oskari.timperi@iki.fi>2017-02-18 15:39:42 +0200
committerOskari Timperi <oskari.timperi@iki.fi>2017-02-18 15:39:42 +0200
commita378aa66d14b1de86df65bc02b411e8858ec620a (patch)
treee4026976111067b0d4a00ff12e87cc3346956b0f /src/client.c
parent1cd48156bb1f8a9afd7a280b0820389592907f2a (diff)
downloadmqtt-a378aa66d14b1de86df65bc02b411e8858ec620a.tar.gz
mqtt-a378aa66d14b1de86df65bc02b411e8858ec620a.zip
Add timeout param to MqttClientRunOnce()
Also change SocketSelect() to take timeout in milliseconds.
Diffstat (limited to 'src/client.c')
-rw-r--r--src/client.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/client.c b/src/client.c
index 3aba76c..c9fa876 100644
--- a/src/client.c
+++ b/src/client.c
@@ -282,7 +282,7 @@ int MqttClientDisconnect(MqttClient *client)
return MqttClientQueueSimplePacket(client, MqttPacketTypeDisconnect);
}
-int MqttClientRunOnce(MqttClient *client)
+int MqttClientRunOnce(MqttClient *client, int timeout)
{
int rv;
int events;
@@ -312,7 +312,12 @@ int MqttClientRunOnce(MqttClient *client)
LOG_DEBUG("selecting");
- rv = SocketSelect(client->stream.sock, &events, client->keepAlive);
+ if (timeout <= 0)
+ {
+ timeout = client->keepAlive * 1000;
+ }
+
+ rv = SocketSelect(client->stream.sock, &events, timeout);
if (rv == -1)
{
@@ -390,7 +395,7 @@ int MqttClientRun(MqttClient *client)
while (!client->stopped)
{
- if (MqttClientRunOnce(client) == -1)
+ if (MqttClientRunOnce(client, -1) == -1)
return -1;
}