for authenticated access record the authenticated username in the logs
diff --git a/authenticate.c b/authenticate.c
index 6a389db..0ff318b 100644
--- a/authenticate.c
+++ b/authenticate.c
@@ -125,21 +125,28 @@
 }
 
 /* possible negotiate authentication with the client. Use "leader" to
-   start off the auth if necessary */
-int auth_server(int fd, int module, char *addr, char *leader)
+   start off the auth if necessary 
+
+   return NULL if authentication failed
+
+   return "" if anonymous access
+
+   otherwise return username
+*/
+char *auth_server(int fd, int module, char *addr, char *leader)
 {
 	char *users = lp_auth_users(module);
 	char challenge[16];
 	char b64_challenge[30];
 	char line[MAXPATHLEN];
-	char user[100];
+	static char user[100];
 	char secret[100];
 	char pass[30];
 	char pass2[30];
 	char *tok;
 
 	/* if no auth list then allow anyone in! */
-	if (!users || !*users) return 1;
+	if (!users || !*users) return "";
 
 	gen_challenge(addr, challenge);
 	
@@ -148,18 +155,18 @@
 	io_printf(fd,"%s%s\n", leader, b64_challenge);
 
 	if (!read_line(fd, line, sizeof(line)-1)) {
-		return 0;
+		return NULL;
 	}
 
 	memset(user, 0, sizeof(user));
 	memset(pass, 0, sizeof(pass));
 
 	if (sscanf(line,"%99s %29s", user, pass) != 2) {
-		return 0;
+		return NULL;
 	}
 
 	users = strdup(users);
-	if (!users) return 0;
+	if (!users) return NULL;
 
 	for (tok=strtok(users," ,\t"); tok; tok = strtok(NULL," ,\t")) {
 		if (strcmp(tok, user) == 0) break;
@@ -167,19 +174,22 @@
 	free(users);
 
 	if (!tok) {
-		return 0;
+		return NULL;
 	}
 	
 	memset(secret, 0, sizeof(secret));
 	if (!get_secret(module, user, secret, sizeof(secret)-1)) {
 		memset(secret, 0, sizeof(secret));
-		return 0;
+		return NULL;
 	}
 
 	generate_hash(secret, b64_challenge, pass2);
 	memset(secret, 0, sizeof(secret));
 	
-	return (strcmp(pass, pass2) == 0);
+	if (strcmp(pass, pass2) == 0)
+		return user;
+
+	return NULL;
 }