From e93fb8ceebe9ca7748d8874893221a40330564e4 Mon Sep 17 00:00:00 2001 From: Jens Wagner Date: Tue, 7 Jan 2014 22:07:54 +0100 Subject: Fix spurious ignoring of pushed config options (trac#349). The function incoming_push_message(...) in push.c uses a local variable option_types_found, that gets passed to do_up(...). If the server push got split into several parts, only the last part (PUSH_MSG_REPLY) option_types_found is used for do_up (initilized as 0 locally), the previous ones (PUSH_MSG_CONTINUATION) are ignored. So e.g. a ping config, pushed by the server in the first push, followed by a lot of "push route" configs, causing a second push message, will have the do_up() called, but without e.g. the OPT_P_TIMER flag, so those options will be silently ignored. The patch resolves that, by introducing "push_option_types_found" in "c->options" and using that as storage. Fix trac bug #349. Acked-by: Gert Doering URL: https://community.openvpn.net/openvpn/ticket/349 Signed-off-by: Gert Doering (cherry picked from commit 1aac9a0b7a4046822a0134cd8693a828f2e16576) --- src/openvpn/options.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/openvpn/options.c') diff --git a/src/openvpn/options.c b/src/openvpn/options.c index 2879654..34e44ec 100644 --- a/src/openvpn/options.c +++ b/src/openvpn/options.c @@ -2867,6 +2867,7 @@ pre_pull_restore (struct options *o) } o->push_continuation = 0; + o->push_option_types_found = 0; } #endif -- cgit