From: Selva Nair <[email protected]> All commands to the management interface are supposed to be responded with either a one-line "SUCCESS:/ERROR:" message or a multi-line reply terminated by "END". But, curently we silently accept the "version n" command wih no response. This causes clients like OpenVPN-GUI lock-up if version command is used, waiting for ever for a reply.
Fix this by adding a SUCCESS response if client version is set to a value >= 4. As the highest client version in use until now is 3, this should not affect any work-arounds in existing clients. ERROR response is generated if the version parameter is null which never happens in practice. Change-Id: I76dc80a9d9b29e401b7bbd59e0c46baf751d2e4a Signed-off-by: Selva Nair <[email protected]> Acked-by: Gert Doering <[email protected]> Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1528 --- This change was reviewed on Gerrit and approved by at least one developer. I request to merge it to master. Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1528 This mail reflects revision 5 of this Change. Acked-by according to Gerrit (reflected above): Gert Doering <[email protected]> diff --git a/doc/management-notes.txt b/doc/management-notes.txt index 1a5c311..86b74f3 100644 --- a/doc/management-notes.txt +++ b/doc/management-notes.txt @@ -492,6 +492,10 @@ version 2 -- Change management version of client to 2 (default = 1) version -- Show the version of OpenVPN and its Management Interface +Note: Until version 3, no response was generated when client sets its +version. This was fixed starting version 4: clients should expect +"SUCCESS: .. " message only when setting the version to >= 4. + COMMAND -- auth-retry --------------------- diff --git a/src/openvpn/manage.c b/src/openvpn/manage.c index 37ae6b3..03ff5b3 100644 --- a/src/openvpn/manage.c +++ b/src/openvpn/manage.c @@ -1333,6 +1333,15 @@ if (version) { man->connection.client_version = atoi(version); + /* Prior to version 3, we missed to respond to this command. Acknowledge only if version >= 4 */ + if (man->connection.client_version >= 4) + { + msg(M_CLIENT, "SUCCESS: Management client version set to %d", man->connection.client_version); + } + } + else + { + msg(M_CLIENT, "ERROR: Invalid value specified for management client version"); } } _______________________________________________ Openvpn-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openvpn-devel
