2011-10-24 13:48:50 |
Rob Pridham |
description |
I use the Mosquitto C library as a client, and the Mosquitto server as the broker, both version 0.13.
When I set the client keepalive to a higher than standard number, e.g. 20 minutes, the server decides that the client has disconnected after 90 seconds.
When I set the client keepalive to the default 60 seconds, the client sends PINGRESP before the 90 second period and thus all is well.
I added some output to the server code and it receives the keepalive value OK in mqtt3_handle_connect(). However when read back in mosquitto_main_loop (from the database?) it returns 60 seconds again. |
I use the Mosquitto C library as a client, and the Mosquitto server as the broker, both version 0.13.
When I set the client keepalive to a higher than standard number, e.g. 20 minutes, the server decides that the client has disconnected after 90 seconds.
When I set the client keepalive to the default 60 seconds, the client sends PINGRESP before the 90 second period and thus all is well.
I added some output to the server code and it receives the keepalive value OK in mqtt3_handle_connect(). However when read back in mosquitto_main_loop (from the database?) it returns 60 seconds again. I don't have any persistence options configured beyond the defaults. |
|
2011-10-24 14:01:43 |
Rob Pridham |
description |
I use the Mosquitto C library as a client, and the Mosquitto server as the broker, both version 0.13.
When I set the client keepalive to a higher than standard number, e.g. 20 minutes, the server decides that the client has disconnected after 90 seconds.
When I set the client keepalive to the default 60 seconds, the client sends PINGRESP before the 90 second period and thus all is well.
I added some output to the server code and it receives the keepalive value OK in mqtt3_handle_connect(). However when read back in mosquitto_main_loop (from the database?) it returns 60 seconds again. I don't have any persistence options configured beyond the defaults. |
I use the Mosquitto C library as a client, and the Mosquitto server as the broker, both version 0.13.
When I set the client keepalive to a higher than standard number, e.g. 20 minutes, the server decides that the client has disconnected after 90 seconds.
When I set the client keepalive to the default 60 seconds, the client sends PINGRESP before the 90 second period and thus all is well.
I added some output to the server code and it receives the keepalive value OK in mqtt3_handle_connect(). However when read back in mosquitto_main_loop (from the database?) it returns 60 seconds again. I don't have any persistence options configured beyond the defaults.
Edited to add: it appears to me that in read_handle_server.c, around line 200, the database structure is populated with values but the previously set keepalive is missing, i.e. the addition of the line:
db->contexts[i]->core.keepalive = context->core.keepalive;
is required. |
|