From b28ac7df563c8cb4e7ca4acd3db7bd866d8ede47 Mon Sep 17 00:00:00 2001
From: Per Cederqvist <ceder@lysator.liu.se>
Date: Wed, 12 Aug 1992 04:13:01 +0000
Subject: [PATCH] Added time-out in get_real_username.

---
 src/server/ChangeLog     | 12 +++++++++++-
 src/server/connections.c |  6 +++---
 src/server/rfc931.c      | 26 ++++++++++++++++++++++----
 src/server/rfc931.h      |  5 +++--
 4 files changed, 39 insertions(+), 10 deletions(-)

diff --git a/src/server/ChangeLog b/src/server/ChangeLog
index a519463ba..2738d468f 100644
--- a/src/server/ChangeLog
+++ b/src/server/ChangeLog
@@ -1,6 +1,16 @@
+Wed Aug 12 01:38:22 1992  Per Cederqvist  (ceder@robin)
+
+	* rfc931.c (get_real_username): Introduce 20-second timeout. Log
+	any ident queries that takes more than 3 seconds. New argument:
+	hostname (only used for the log).
+	* connections.c (login_request): Send the new argument.
+
+	* log.c (logv): Print the log message on a single line, with the
+	time in the first 20 columns. (Facilitate log browsing).
+
 Wed Aug 12 00:33:55 1992  Inge Wallin  (inge@lysator)
 
-	* simple-cache.c(save_one_text): Write texts to file as long as
+	* simple-cache.c (save_one_text): Write texts to file as long as
 	  they are removed. 
 
 Thu Jun 11 16:28:39 1992  Per Cederqvist  (ceder@lysator)
diff --git a/src/server/connections.c b/src/server/connections.c
index e7929fc2f..984fba6e3 100644
--- a/src/server/connections.c
+++ b/src/server/connections.c
@@ -1,5 +1,5 @@
 /*
- * $Id: connections.c,v 0.19 1992/06/11 14:32:54 ceder Exp $
+ * $Id: connections.c,v 0.20 1992/08/12 04:12:53 ceder Exp $
  * Copyright (C) 1991  Lysator Academic Computer Association.
  *
  * This file is part of the LysKOM server.
@@ -30,7 +30,7 @@
  * Created by Willf|r 31/3-90. Mostly written by ceder.
  */
 
-static char *rcsid = "$Id: connections.c,v 0.19 1992/06/11 14:32:54 ceder Exp $";
+static char *rcsid = "$Id: connections.c,v 0.20 1992/08/12 04:12:53 ceder Exp $";
 
 
 #include <errno.h>
@@ -781,7 +781,7 @@ login_request(IscEvent  *event)
 
 	/* Get the real user name, as returned by the Ident protocol
 	   (rfc 931). */
-	realuser = get_real_username(event->session);
+	realuser = get_real_username(event->session, hostname);
 	if (realuser != NULL)
 	    s_crea_str(&cp->ident_user, realuser);
 
diff --git a/src/server/rfc931.c b/src/server/rfc931.c
index 63e103c07..d57f32415 100644
--- a/src/server/rfc931.c
+++ b/src/server/rfc931.c
@@ -1,5 +1,5 @@
 /*
- * $Id: rfc931.c,v 1.2 1992/04/01 20:32:03 ceder Exp $
+ * $Id: rfc931.c,v 1.3 1992/08/12 04:12:57 ceder Exp $
  * Copyright (C) 1991  Lysator Academic Computer Association.
  *
  * This file is part of the LysKOM server.
@@ -36,22 +36,40 @@
 #include <m-config.h>
 #include "rfc931.h"
 #include <authuser.h>
+#include <errno.h>
+#include "log.h"
 
 #ifdef RFC_931
 
 char *
-get_real_username(IscSession *scb)
+get_real_username(IscSession *scb,
+		  char *hostname)
 {
     unsigned long inlocal;
     unsigned long inremote;
     unsigned short local;
     unsigned short remote;
-
+    char *result;
+    time_t before, after;
 
     if (auth_fd2(scb->fd, &inlocal, &inremote,
 		 &local, &remote) == -1)
  	return NULL;
 
-    return auth_tcpuser2(inlocal, inremote, local, remote);
+    time(&before);
+    result = auth_tcpuser3(inlocal, inremote, local, remote, 20);
+    if (result == NULL && errno == ETIMEDOUT)
+	log ("Identd request to %s timed out.\n", hostname);
+    else
+    {
+	time(&after);
+	if (difftime(after, before) > 3)
+	    log ("Identd request to %s yielded %s after %d seconds.\n",
+		 hostname,
+		 result == NULL ? "(null)" :  result,
+		 (int)difftime(after, before));
+    }
+
+    return result;
 }
 #endif
diff --git a/src/server/rfc931.h b/src/server/rfc931.h
index 5e1380430..3158fc04c 100644
--- a/src/server/rfc931.h
+++ b/src/server/rfc931.h
@@ -1,5 +1,5 @@
 /*
- * $Id: rfc931.h,v 1.1 1992/03/31 21:51:34 ceder Exp $
+ * $Id: rfc931.h,v 1.2 1992/08/12 04:13:01 ceder Exp $
  * Copyright (C) 1991  Lysator Academic Computer Association.
  *
  * This file is part of the LysKOM server.
@@ -23,4 +23,5 @@
  * Please mail bug reports to bug-lyskom@lysator.liu.se. 
  */
 
-char *get_real_username(IscSession *scb);
+char *get_real_username(IscSession *scb,
+			char *hostname);
-- 
GitLab