From: James Yonan Date: Fri, 2 Sep 2011 23:49:45 +0000 (+0000) Subject: Fixed management interface bug where >FATAL notifications were X-Git-Tag: v2.3-alpha1~184 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c21b73f251f76e84f789484587e7c82735977549;p=thirdparty%2Fopenvpn.git Fixed management interface bug where >FATAL notifications were not being output properly because the management interface socket was being closed before the >FATAL notification could be transmitted. Version 2.1.14 git-svn-id: http://svn.openvpn.net/projects/openvpn/branches/BETA21/openvpn@7587 e7ae566f-a301-0410-adde-c780ea21d3b5 --- diff --git a/manage.c b/manage.c index c6632cdb6..ce6fae7f5 100644 --- a/manage.c +++ b/manage.c @@ -283,7 +283,10 @@ virtual_output_callback_func (void *arg, const unsigned int flags, const char *s { struct management *man = (struct management *) arg; static int recursive_level = 0; /* GLOBAL */ - bool did_push = false; + +# define AF_DID_PUSH (1<<0) +# define AF_DID_RESET (1<<1) + unsigned int action_flags = 0; if (!recursive_level) /* don't allow recursion */ { @@ -317,7 +320,7 @@ virtual_output_callback_func (void *arg, const unsigned int flags, const char *s if (out) { man_output_list_push_str (man, out); - did_push = true; + action_flags |= AF_DID_PUSH; } if (flags & M_FATAL) { @@ -325,8 +328,7 @@ virtual_output_callback_func (void *arg, const unsigned int flags, const char *s if (out) { man_output_list_push_str (man, out); - did_push = true; - man_reset_client_socket (man, true); + action_flags |= (AF_DID_PUSH|AF_DID_RESET); } } } @@ -335,8 +337,10 @@ virtual_output_callback_func (void *arg, const unsigned int flags, const char *s gc_free (&gc); } - if (did_push) + if (action_flags & AF_DID_PUSH) man_output_list_push_finalize (man); + if (action_flags & AF_DID_RESET) + man_reset_client_socket (man, true); } /*