sntp: remove existing timeout before creating new

This prevents sntp using more than 2 timeouts.
See bug #56431
This commit is contained in:
David Girault 2019-06-03 16:26:16 +02:00 committed by Simon Goldschmidt
parent d4b3a006dc
commit 7316b26740

View File

@ -371,6 +371,7 @@ sntp_retry(void *arg)
sntp_retry_timeout)); sntp_retry_timeout));
/* set up a timer to send a retry and increase the retry delay */ /* set up a timer to send a retry and increase the retry delay */
sys_untimeout(sntp_request, NULL);
sys_timeout(sntp_retry_timeout, sntp_request, NULL); sys_timeout(sntp_retry_timeout, sntp_request, NULL);
#if SNTP_RETRY_TIMEOUT_EXP #if SNTP_RETRY_TIMEOUT_EXP
@ -558,6 +559,7 @@ sntp_send_request(const ip_addr_t *server_addr)
sntp_servers[sntp_current_server].reachability <<= 1; sntp_servers[sntp_current_server].reachability <<= 1;
#endif /* SNTP_MONITOR_SERVER_REACHABILITY */ #endif /* SNTP_MONITOR_SERVER_REACHABILITY */
/* set up receive timeout: try next server or retry on timeout */ /* set up receive timeout: try next server or retry on timeout */
sys_untimeout(sntp_try_next_server, NULL);
sys_timeout((u32_t)SNTP_RECV_TIMEOUT, sntp_try_next_server, NULL); sys_timeout((u32_t)SNTP_RECV_TIMEOUT, sntp_try_next_server, NULL);
#if SNTP_CHECK_RESPONSE >= 1 #if SNTP_CHECK_RESPONSE >= 1
/* save server address to verify it in sntp_recv */ /* save server address to verify it in sntp_recv */
@ -567,6 +569,7 @@ sntp_send_request(const ip_addr_t *server_addr)
LWIP_DEBUGF(SNTP_DEBUG_SERIOUS, ("sntp_send_request: Out of memory, trying again in %"U32_F" ms\n", LWIP_DEBUGF(SNTP_DEBUG_SERIOUS, ("sntp_send_request: Out of memory, trying again in %"U32_F" ms\n",
(u32_t)SNTP_RETRY_TIMEOUT)); (u32_t)SNTP_RETRY_TIMEOUT));
/* out of memory: set up a timer to send a retry */ /* out of memory: set up a timer to send a retry */
sys_untimeout(sntp_request, NULL);
sys_timeout((u32_t)SNTP_RETRY_TIMEOUT, sntp_request, NULL); sys_timeout((u32_t)SNTP_RETRY_TIMEOUT, sntp_request, NULL);
} }
} }
@ -635,6 +638,7 @@ sntp_request(void *arg)
} else { } else {
/* address conversion failed, try another server */ /* address conversion failed, try another server */
LWIP_DEBUGF(SNTP_DEBUG_WARN_STATE, ("sntp_request: Invalid server address, trying next server.\n")); LWIP_DEBUGF(SNTP_DEBUG_WARN_STATE, ("sntp_request: Invalid server address, trying next server.\n"));
sys_untimeout(sntp_try_next_server, NULL);
sys_timeout((u32_t)SNTP_RETRY_TIMEOUT, sntp_try_next_server, NULL); sys_timeout((u32_t)SNTP_RETRY_TIMEOUT, sntp_try_next_server, NULL);
} }
} }