summaryrefslogtreecommitdiffstats
path: root/src/openvpn
diff options
context:
space:
mode:
Diffstat (limited to 'src/openvpn')
-rw-r--r--src/openvpn/options.c1
-rw-r--r--src/openvpn/options.h1
-rw-r--r--src/openvpn/push.c4
3 files changed, 5 insertions, 1 deletions
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
diff --git a/src/openvpn/options.h b/src/openvpn/options.h
index c5f104f..8cbb85a 100644
--- a/src/openvpn/options.h
+++ b/src/openvpn/options.h
@@ -460,6 +460,7 @@ struct options
bool client;
bool pull; /* client pull of config options from server */
int push_continuation;
+ unsigned int push_option_types_found;
const char *auth_user_pass_file;
struct options_pre_pull *pre_pull;
diff --git a/src/openvpn/push.c b/src/openvpn/push.c
index be50bef..11505cb 100644
--- a/src/openvpn/push.c
+++ b/src/openvpn/push.c
@@ -202,8 +202,10 @@ incoming_push_message (struct context *c, const struct buffer *buffer)
msg (D_PUSH_ERRORS, "WARNING: Received bad push/pull message: %s", sanitize_control_message(BSTR(buffer), &gc));
else if (status == PUSH_MSG_REPLY || status == PUSH_MSG_CONTINUATION)
{
+ c->options.push_option_types_found |= option_types_found;
+
if (status == PUSH_MSG_REPLY)
- do_up (c, true, option_types_found); /* delay bringing tun/tap up until --push parms received from remote */
+ do_up (c, true, c->options.push_option_types_found ); /* delay bringing tun/tap up until --push parms received from remote */
event_timeout_clear (&c->c2.push_request_interval);
}