chiark / gitweb /
Add global unihash table; use universal hashing instead of CRC.
[mLib] / ident.c
diff --git a/ident.c b/ident.c
index 6d29f90ee90e29e84210e3a9d2ba5302276e0816..2d2f9b956e5035a4bfc9a95d7725f54b6f0c4224 100644 (file)
--- a/ident.c
+++ b/ident.c
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: ident.c,v 1.2 2000/06/17 10:38:35 mdw Exp $
+ * $Id: ident.c,v 1.5 2002/01/13 13:33:15 mdw Exp $
  *
  * Nonblocking RFC931 client
  *
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: ident.c,v $
+ * Revision 1.5  2002/01/13 13:33:15  mdw
+ * Track interface change for @lbuf@.
+ *
+ * Revision 1.4  2001/06/22 19:35:39  mdw
+ * New @conn_init@ interface.
+ *
+ * Revision 1.3  2000/10/08 11:17:45  mdw
+ * (ident_socket): change sizes to be @size_t@.
+ *
  * Revision 1.2  2000/06/17 10:38:35  mdw
  * Track changes to selbuf interface.
  *
@@ -159,6 +168,7 @@ static void parse(char *p, ident_reply *i)
 /* --- @line@ --- *
  *
  * Arguments:  @char *s@ = pointer to string from ident server
+ *             @size_t len@ = length of the line
  *             @void *p@ = pointer to my request block
  *
  * Returns:    ---
@@ -166,7 +176,7 @@ static void parse(char *p, ident_reply *i)
  * Use:                Handles a string from an ident server.
  */
 
-static void line(char *s, void *p)
+static void line(char *s, size_t len, void *p)
 {
   ident_request *rq = p;
 
@@ -292,8 +302,9 @@ static void go(ident_request *rq)
   sin.sin_family = AF_INET;
   sin.sin_port = htons(113);
   sin.sin_addr = rq->remote.sin_addr;
-  conn_init(&rq->c, rq->s, fd, (struct sockaddr *)&sin, sizeof(sin),
-           connected, rq);
+  if (conn_init(&rq->c, rq->s, fd, (struct sockaddr *)&sin, sizeof(sin),
+               connected, rq))
+    goto fail_1;
 
   /* --- Finish off initializing the block --- */
 
@@ -357,7 +368,7 @@ void ident_socket(ident_request *rq, sel_state *s, int sk,
                  void (*func)(ident_reply */*i*/, void */*p*/),
                  void *p)
 {
-  int sinsz;
+  size_t sinsz;
   if ((sinsz = sizeof(struct sockaddr_in),
        getsockname(sk, (struct sockaddr *)&rq->local, &sinsz)) ||
       (sinsz = sizeof(struct sockaddr_in),