summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--forward.c9
-rw-r--r--interval.h8
-rw-r--r--version.m42
3 files changed, 14 insertions, 5 deletions
diff --git a/forward.c b/forward.c
index 2c26927..2205054 100644
--- a/forward.c
+++ b/forward.c
@@ -176,6 +176,9 @@ void
check_push_request_dowork (struct context *c)
{
send_push_request (c);
+
+ /* if no response to first push_request, retry at 5 second intervals */
+ event_timeout_modify_wakeup (&c->c2.push_request_interval, 5);
}
#endif
@@ -204,10 +207,8 @@ check_connection_established_dowork (struct context *c)
0);
}
#endif
- send_push_request (c);
-
- /* if no reply, try again in 5 sec */
- event_timeout_init (&c->c2.push_request_interval, 5, now);
+ /* send push request in 1 sec */
+ event_timeout_init (&c->c2.push_request_interval, 1, now);
reset_coarse_timers (c);
}
else
diff --git a/interval.h b/interval.h
index afba948..f0e5875 100644
--- a/interval.h
+++ b/interval.h
@@ -177,6 +177,14 @@ event_timeout_reset (struct event_timeout* et)
et->last = now;
}
+static inline void
+event_timeout_modify_wakeup (struct event_timeout* et, interval_t n)
+{
+ /* note that you might need to call reset_coarse_timers after this */
+ if (et->defined)
+ et->n = (n >= 0) ? n : 0;
+}
+
/*
* This is the principal function for testing and triggering recurring
* timers and will return true on a timer signal event.
diff --git a/version.m4 b/version.m4
index e3bb492..887de1e 100644
--- a/version.m4
+++ b/version.m4
@@ -1,5 +1,5 @@
dnl define the OpenVPN version
-define(PRODUCT_VERSION,[2.1_rc19c])
+define(PRODUCT_VERSION,[2.1_rc19d])
dnl define the TAP version
define(PRODUCT_TAP_ID,[tap0901])
define(PRODUCT_TAP_WIN32_MIN_MAJOR,[9])