[PATCH 05/10] Use ka_check_deadline() to simplify gpst_mainloop() and esp_mainloop() timers
Daniel Lenski
dlenski at gmail.com
Tue Jan 9 00:01:19 PST 2018
Signed-off-by: Daniel Lenski <dlenski at gmail.com>
---
esp.c | 7 ++-----
gpst.c | 4 +---
mainloop.c | 2 +-
openconnect-internal.h | 1 +
4 files changed, 5 insertions(+), 9 deletions(-)
diff --git a/esp.c b/esp.c
index 7876fd5..6285ff8 100644
--- a/esp.c
+++ b/esp.c
@@ -253,15 +253,12 @@ int esp_mainloop(struct openconnect_info *vpninfo, int *timeout)
int ret;
if (vpninfo->dtls_state == DTLS_SLEEPING) {
- int when = vpninfo->new_dtls_started + vpninfo->dtls_attempt_period - time(NULL);
- if (when <= 0 || vpninfo->dtls_need_reconnect) {
+ if (ka_check_deadline(timeout, time(NULL), vpninfo->new_dtls_started + vpninfo->dtls_attempt_period)
+ || vpninfo->dtls_need_reconnect) {
vpn_progress(vpninfo, PRG_DEBUG, _("Send ESP probes\n"));
if (vpninfo->proto->udp_send_probes)
vpninfo->proto->udp_send_probes(vpninfo);
- when = vpninfo->dtls_attempt_period;
}
- if (*timeout > when * 1000)
- *timeout = when * 1000;
}
if (vpninfo->dtls_fd == -1)
return 0;
diff --git a/gpst.c b/gpst.c
index 76f66c1..a82db64 100644
--- a/gpst.c
+++ b/gpst.c
@@ -904,10 +904,8 @@ int gpst_mainloop(struct openconnect_info *vpninfo, int *timeout)
return 0;
case DTLS_SECRET:
case DTLS_SLEEPING:
- if (time(NULL) < vpninfo->dtls_times.last_rekey + 5) {
+ if (!ka_check_deadline(timeout, time(NULL), vpninfo->dtls_times.last_rekey + 5)) {
/* Allow 5 seconds after configuration for ESP to start */
- if (*timeout > 5000)
- *timeout = 5000;
return 0;
} else if (!vpninfo->ssl_times.last_rekey) {
/* ... before we switch to HTTPS instead */
diff --git a/mainloop.c b/mainloop.c
index 4124509..fe185fe 100644
--- a/mainloop.c
+++ b/mainloop.c
@@ -315,7 +315,7 @@ int openconnect_mainloop(struct openconnect_info *vpninfo,
return ret < 0 ? ret : -EIO;
}
-static int ka_check_deadline(int *timeout, time_t now, time_t due)
+int ka_check_deadline(int *timeout, time_t now, time_t due)
{
if (now >= due)
return 1;
diff --git a/openconnect-internal.h b/openconnect-internal.h
index 4b65444..8f77f22 100644
--- a/openconnect-internal.h
+++ b/openconnect-internal.h
@@ -964,6 +964,7 @@ int tun_mainloop(struct openconnect_info *vpninfo, int *timeout);
int queue_new_packet(struct pkt_q *q, void *buf, int len);
int keepalive_action(struct keepalive_info *ka, int *timeout);
int ka_stalled_action(struct keepalive_info *ka, int *timeout);
+int ka_check_deadline(int *timeout, time_t now, time_t due);
/* xml.c */
ssize_t read_file_into_string(struct openconnect_info *vpninfo, const char *fname,
--
2.7.4
More information about the openconnect-devel
mailing list