diff -ruN openvpn-2.0.5/multi.c openvpn-2.0.5-username/multi.c
--- openvpn-2.0.5/multi.c	2005-11-01 19:21:15.000000000 +0100
+++ openvpn-2.0.5-username/multi.c	2005-11-07 12:47:39.000000000 +0100
@@ -710,8 +710,12 @@
 
 	      if (!mi->halt)
 		{
+      char* username = "UNKNOWN";
+      if (mi->context.c2.tls_multi->session[TM_ACTIVE].username)
+        username = mi->context.c2.tls_multi->session[TM_ACTIVE].username;
+
 		  status_printf (so, "CLIENT_LIST,%s,%s,%s," counter_format "," counter_format ",%s,%u",
-				 tls_common_name (mi->context.c2.tls_multi, false),
+         username,
 				 mroute_addr_print (&mi->real, &gc),
 				 print_in_addr_t (mi->reporting_addr, IA_EMPTY_IF_UNDEF, &gc),
 				 mi->context.c2.link_read_bytes,
diff -ruN openvpn-2.0.5/ssl.c openvpn-2.0.5-username/ssl.c
--- openvpn-2.0.5/ssl.c	2005-11-01 12:06:10.000000000 +0100
+++ openvpn-2.0.5-username/ssl.c	2005-11-07 12:47:39.000000000 +0100
@@ -1551,6 +1551,9 @@
   if (session->common_name)
     free (session->common_name);
 
+  if (session->username)
+    free (session->username);
+
   if (clear)
     CLEAR (*session);
 }
@@ -2376,6 +2379,7 @@
       /* set username/password in private env space */
       setenv_str (session->opt->es, "username", raw_username);
       setenv_str (session->opt->es, "password", up->password);
+      
 
       /* setenv incoming cert common name for script */
       setenv_str (session->opt->es, "common_name", session->common_name);
@@ -2391,6 +2395,8 @@
 
       setenv_del (session->opt->es, "password");
       setenv_str (session->opt->es, "username", up->username);
+
+      session->username = strdup(raw_username);
     }
   else
     {
diff -ruN openvpn-2.0.5/ssl.h openvpn-2.0.5-username/ssl.h
--- openvpn-2.0.5/ssl.h	2005-11-01 12:06:11.000000000 +0100
+++ openvpn-2.0.5-username/ssl.h	2005-11-07 12:47:39.000000000 +0100
@@ -484,6 +484,7 @@
 
   int verify_maxlevel;
 
+  char *username;
   char *common_name;
   bool verified;                /* true if peer certificate was verified against CA */
 

