Skip to content

Commit c7eda33

Browse files
someburnertuanpmt
authored andcommitted
Put keepAliveTick in more sensible location (#140)
* Put keepAliveTick in more sensible location In short, keepAliveTick should not be reset every time a packet is received, since, for ex, a QoS 0 packet does not require an Ack. Likely related to #128. Steps to recreate issue: - Set client keepalive to 20 seconds - dont publish anything for > 30 seconds - spam the device with something like snippit below: ``` #!/bin/bash SPAM_DELAY=1; while : do mosquitto_pub -h hostname -t /test/topic -m 'test playload' sleep $SPAM_DELAY; done ``` * reset keepalive tick when send msg
1 parent 23586bd commit c7eda33

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

mqtt/mqtt.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,6 @@ mqtt_tcpclient_recv(void *arg, char *pdata, unsigned short len)
297297
struct espconn *pCon = (struct espconn*)arg;
298298
MQTT_Client *client = (MQTT_Client *)pCon->reverse;
299299

300-
client->keepAliveTick = 0;
301300
READPACKET:
302301
MQTT_INFO("TCP: data received %d bytes\r\n", len);
303302
// MQTT_INFO("STATE: %d\r\n", client->connState);
@@ -746,6 +745,7 @@ MQTT_Task(os_event_t *e)
746745

747746
client->sendTimeout = MQTT_SEND_TIMOUT;
748747
MQTT_INFO("MQTT: Sending, type: %d, id: %04X\r\n", client->mqtt_state.pending_msg_type, client->mqtt_state.pending_msg_id);
748+
client->keepAliveTick = 0;
749749
if (client->security) {
750750
#ifdef MQTT_SSL_ENABLE
751751
espconn_secure_send(client->pCon, dataBuffer, dataLen);

0 commit comments

Comments
 (0)