From 011de7ed19a911fddd0a19f3aa8a95de70acc4ca Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Wed, 16 Sep 2015 22:14:26 +0100 Subject: [PATCH] Fix excessive calls to message retry check. --- ChangeLog.txt | 1 + src/loop.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index 320d4ab6..26b6d8ed 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -6,6 +6,7 @@ Broker: connect. Closes #477571. - Fix cross compiling of websockets. Closes #475807. - Fix memory free related crashes on openwrt. Closes #475707. +- Fix excessive calls to message retry check. 1.4.3 - 20150818 diff --git a/src/loop.c b/src/loop.c index 5970a0d9..a5f624b3 100644 --- a/src/loop.c +++ b/src/loop.c @@ -115,6 +115,7 @@ int mosquitto_main_loop(struct mosquitto_db *db, mosq_sock_t *listensock, int li #endif int context_count; time_t expiration_check_time = 0; + time_t last_timeout_check = 0; char *id; #ifndef WIN32 @@ -307,7 +308,11 @@ int mosquitto_main_loop(struct mosquitto_db *db, mosq_sock_t *listensock, int li expiration_check_time = time(NULL) + 3600; } - mqtt3_db_message_timeout_check(db, db->config->retry_interval); + if(last_timeout_check < mosquitto_time()){ + /* Only check at most once per second. */ + mqtt3_db_message_timeout_check(db, db->config->retry_interval); + last_timeout_check = mosquitto_time(); + } #ifndef WIN32 sigprocmask(SIG_SETMASK, &sigblock, &origsig);