From: james Date: Wed, 16 Sep 2009 18:58:49 +0000 (+0000) Subject: Modified client to send a PUSH_REQUEST message to server 1 second X-Git-Tag: v2.1_rc20~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=72bf37c7130719ce105d73600341379389c4031f;p=thirdparty%2Fopenvpn.git 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 --- diff --git a/forward.c b/forward.c index 2c26927e1..220505465 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 afba9480f..f0e5875fb 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 e3bb49297..887de1efe 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])