Permalink
Browse files

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
  • Loading branch information...
1 parent 8cfa4eb commit c21b73f251f76e84f789484587e7c82735977549 @jamesyonan jamesyonan committed with dsommers Sep 2, 2011
Showing with 9 additions and 5 deletions.
  1. +9 −5 manage.c
View
@@ -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,16 +320,15 @@ 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)
{
out = log_entry_print (&e, LOG_FATAL_NOTIFY|LOG_PRINT_CRLF, &gc);
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);
}
/*

0 comments on commit c21b73f

Please sign in to comment.