diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/client.c | 11 | ||||
| -rw-r--r-- | src/mqtt.h | 2 | ||||
| -rw-r--r-- | src/socket.c | 4 |
3 files changed, 11 insertions, 6 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; } @@ -73,7 +73,7 @@ int MqttClientConnect(MqttClient *client, const char *host, short port, int MqttClientDisconnect(MqttClient *client); -int MqttClientRunOnce(MqttClient *client); +int MqttClientRunOnce(MqttClient *client, int timeout); int MqttClientRun(MqttClient *client); diff --git a/src/socket.c b/src/socket.c index e161f53..64a7c01 100644 --- a/src/socket.c +++ b/src/socket.c @@ -154,8 +154,8 @@ int SocketSelect(int sock, int *events, int timeout) } memset(&tv, 0, sizeof(tv)); - tv.tv_sec = timeout; - tv.tv_usec = 0; + tv.tv_sec = timeout / 1000; + tv.tv_usec = (timeout - (tv.tv_sec * 1000)) * 1000; *events = 0; |
