If a GUIs sets IV_OPENVPN_GUI_VERSION the version will be pushed to the server.

Also fix implicit declaration of function 'multi_output_peer_info_env'  by 
including multi.h into ssl.c

Signed-off-by: Arne Schwabe <a...@rfc2549.org>
---
 src/openvpn/ssl.c |   17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/openvpn/ssl.c b/src/openvpn/ssl.c
index 12da365..75b81fc 100644
--- a/src/openvpn/ssl.c
+++ b/src/openvpn/ssl.c
@@ -67,6 +67,7 @@
 #include "ssl.h"
 #include "ssl_verify.h"
 #include "ssl_backend.h"
+#include "multi.h"

 #include "memdbg.h"

@@ -1817,15 +1818,17 @@ push_peer_info(struct buffer *buf, struct tls_session 
*session)
          get_default_gateway (&rgi);
          if (rgi.flags & RGI_HWADDR_DEFINED)
            buf_printf (&out, "IV_HWADDR=%s\n", format_hex_ex (rgi.hwaddr, 6, 
0, 1, ":", &gc));
+        }

-         /* push env vars that begin with UV_ */
-         for (e=es->list; e != NULL; e=e->next)
+      /* push env vars that begin with UV_ and IV_OPENVPN_GUI_VERSION*/
+      for (e=es->list; e != NULL; e=e->next)
+       {
+         if (e->string)
            {
-             if (e->string)
-               {
-                 if (!strncmp(e->string, "UV_", 3) && buf_safe(&out, 
strlen(e->string)+1))
-                   buf_printf (&out, "%s\n", e->string);
-               }
+             if (((strncmp(e->string, "UV_", 3)==0 && 
session->opt->push_peer_info_detail >= 2)
+                  || (strcmp(e->string,"IV_OPENVPN_GUI_VERSION")==0))
+                 && buf_safe(&out, strlen(e->string)+1))
+               buf_printf (&out, "%s\n", e->string);
            }
        }

-- 
1.7.9.5


Reply via email to