From: james Date: Thu, 21 May 2009 10:15:26 +0000 (+0000) Subject: Fixed race condition in management interface recv code on X-Git-Tag: v2.1_rc17~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1b3842c6c9c6c143751d9a87a13745e1b2a0c7c7;p=thirdparty%2Fopenvpn.git Fixed race condition in management interface recv code on Windows, where sending a set of several commands to the management interface in quick succession might cause the latter commands in the set to be ignored. Increased management interface input command buffer size from 256 to 1024 bytes. Minor tweaks to Windows build system. git-svn-id: http://svn.openvpn.net/projects/openvpn/branches/BETA21/openvpn@4414 e7ae566f-a301-0410-adde-c780ea21d3b5 --- diff --git a/install-win32/getgui b/install-win32/getgui index 03f68a869..b53a8f7d7 100644 --- a/install-win32/getgui +++ b/install-win32/getgui @@ -7,7 +7,7 @@ GUI="$OPENVPN_GUI_DIR/$OPENVPN_GUI" -if [ -e "$GUI" ]; then +if [ -f "$GUI" ]; then mkdir -p $GENOUT/bin &>/dev/null cp $GUI $GENOUT/bin if [ -d "$SIGNTOOL" ]; then @@ -15,7 +15,7 @@ if [ -e "$GUI" ]; then fi fi -if [ -e "$GENOUT/bin/$OPENVPN_GUI" ]; then +if [ -f "$GENOUT/bin/$OPENVPN_GUI" ]; then echo '!define OPENVPN_GUI_DEFINED' >autodefs/guidefs.nsi else cat /dev/null >autodefs/guidefs.nsi diff --git a/install-win32/maketext b/install-win32/maketext index cf59b53b3..9a94a8121 100644 --- a/install-win32/maketext +++ b/install-win32/maketext @@ -41,7 +41,7 @@ cp install-win32/setpath.nsi $n cp install-win32/GetWindowsVersion.nsi $n if [ -n "$EXTRACT_FILES" ]; then - cp install-win32/MultiFileExtract.nsi $n + cp "$EXTRACT_FILES/MultiFileExtract.nsi" $n fi # get OpenVPN client config files diff --git a/manage.c b/manage.c index 1dd2825b9..11038e86b 100644 --- a/manage.c +++ b/manage.c @@ -1914,7 +1914,7 @@ man_connection_init (struct management *man) * Allocate helper objects for command line input and * command output from/to the socket. */ - man->connection.in = command_line_new (256); + man->connection.in = command_line_new (1024); man->connection.out = buffer_list_new (0); /* @@ -2323,7 +2323,8 @@ management_io (struct management *man) { if (net_events & FD_READ) { - man_read (man); + while (man_read (man) > 0) + ; net_event_win32_clear_selected_events (&man->connection.ne32, FD_READ); } }