diff options
-rw-r--r-- | error.c | 3 | ||||
-rw-r--r-- | init.c | 16 | ||||
-rw-r--r-- | version.m4 | 2 |
3 files changed, 20 insertions, 1 deletions
@@ -682,10 +682,13 @@ msg_thread_uninit (void) void openvpn_exit (const int status) { + void tun_abort(); #ifdef ENABLE_PLUGIN void plugin_abort (void); #endif + tun_abort(); + #ifdef WIN32 uninit_win32 (); #endif @@ -41,6 +41,8 @@ #include "occ-inline.h" +static struct context *static_context; /* GLOBAL */ + /* * Crypto initialization flags */ @@ -1109,6 +1111,7 @@ do_open_tun (struct context *c) SET_MTU_TUN | SET_MTU_UPPER_BOUND); ret = true; + static_context = c; } else { @@ -1162,6 +1165,8 @@ do_close_tun (struct context *c, bool force) if (force || !(c->sig->signal_received == SIGUSR1 && c->options.persist_tun)) { + static_context = NULL; + #ifdef ENABLE_MANAGEMENT /* tell management layer we are about to close the TUN/TAP device */ if (management) @@ -1218,6 +1223,17 @@ do_close_tun (struct context *c, bool force) gc_free (&gc); } +void +tun_abort() +{ + struct context *c = static_context; + if (c) + { + static_context = NULL; + do_close_tun (c, true); + } +} + /* * Handle delayed tun/tap interface bringup due to --up-delay or --pull */ @@ -1,5 +1,5 @@ dnl define the OpenVPN version -define(PRODUCT_VERSION,[2.1.1]) +define(PRODUCT_VERSION,[2.1.1a]) dnl define the TAP version define(PRODUCT_TAP_ID,[tap0901]) define(PRODUCT_TAP_WIN32_MIN_MAJOR,[9]) |