Fix bug in identification timout handling.
[fwd] / identify.c
index 4b22043..e35799c 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: identify.c,v 1.5 1999/10/10 16:45:34 mdw Exp $
+ * $Id: identify.c,v 1.9 2003/11/29 22:13:43 mdw Exp $
  *
  * Identifies and logs the client of a connection
  *
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: identify.c,v $
+ * Revision 1.9  2003/11/29 22:13:43  mdw
+ * Fix bug in identification timout handling.
+ *
+ * Revision 1.8  2003/11/29 20:36:07  mdw
+ * Privileged outgoing connections.
+ *
+ * Revision 1.7  2002/02/22 23:43:32  mdw
+ * Call @xfree@ rather than @free@.
+ *
+ * Revision 1.6  2001/06/22 19:36:49  mdw
+ * Enlarge the identity buffer.
+ *
  * Revision 1.5  1999/10/10 16:45:34  mdw
  * Modified to use new mLib resolver and ident client.
  *
@@ -95,8 +107,8 @@ typedef struct id {
   sel_timer t;                         /* Timeout selector */
   bres_client r;                       /* Backgd resolver client block */
   ident_request i;                     /* Ident client block */
-  char host[64];                       /* Resolved hostname */
-  char user[32];                       /* Authenticated client user */
+  char host[128];                      /* Resolved hostname */
+  char user[64];                       /* Authenticated client user */
 } id;
 
 #define S_HOST 1u                      /* Read the hostname from resolver */
@@ -127,14 +139,15 @@ static void id_done(id *i)
 
   /* --- Report the final result --- */
 
-  fw_log(i->when, "[%s] %s from %s@%s [%s]",
+  fw_log(i->when, "[%s] %s from %s@%s [%s:%u]",
         i->q.desc, i->q.act,
-        i->user, i->host, inet_ntoa(i->q.rsin.sin_addr));
+        i->user, i->host,
+        inet_ntoa(i->q.rsin.sin_addr), (unsigned)ntohs(i->q.rsin.sin_port));
 
   /* --- Dispose of the block --- */
 
   REFFD_DEC(i->q.r);
-  free(i);
+  xfree(i);
 }
 
 /* --- @id_res@ --- *
@@ -196,6 +209,7 @@ static void id_ident(ident_reply *ir, void *vp)
 static void id_timer(struct timeval *tv, void *vp)
 {
   id *i = vp;
+  i->state |= S_TIMER:
   id_done(i);
 }