summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjames <james@e7ae566f-a301-0410-adde-c780ea21d3b5>2009-09-16 18:58:49 +0000
committerjames <james@e7ae566f-a301-0410-adde-c780ea21d3b5>2009-09-16 18:58:49 +0000
commit72bf37c7130719ce105d73600341379389c4031f (patch)
tree7142dad3e0edd2a1b025d8ed14a43f9f235ccb42
parent0adafbc179026f46fc32dfb4e24132151e3194a5 (diff)
downloadopenvpn-72bf37c7130719ce105d73600341379389c4031f.tar.gz
openvpn-72bf37c7130719ce105d73600341379389c4031f.tar.xz
openvpn-72bf37c7130719ce105d73600341379389c4031f.zip
Modified client to send a PUSH_REQUEST message to server 1 second
after connection initiation rather than 0 seconds after. Successive PUSH_REQUEST messages after the first will continue to be sent at 5 second intervals until a response is received. This tends to speed up the client connection sequence by 4 seconds because the first PUSH_REQUEST message is usually sent too soon and is dropped, causing a wait of 5 seconds until the next PUSH_REQUEST message is sent. Version 2.1_rc19d git-svn-id: http://svn.openvpn.net/projects/openvpn/branches/BETA21/openvpn@4965 e7ae566f-a301-0410-adde-c780ea21d3b5
-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])