From 3f91c7dfe1a82286b1fc01ca2bd1a1f3108caed8 Mon Sep 17 00:00:00 2001
From: hniksic <devnull@localhost>
Date: Wed, 10 Jan 2001 07:06:00 -0800
Subject: [PATCH] [svn] Declare addrlen as int.  Published in
 <sxsu27cbtzu.fsf@florida.arsdigita.de>.

---
 src/ChangeLog |  6 ++++++
 src/connect.c | 10 +++++++---
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index b1f049de..be8bf28c 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
+2001-01-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+	* connect.c (bindport): Declare addrlen as int.  Diagnosed by
+	Drazen Kacar <dave@arsdigita.com>.
+	(conaddr): Ditto.
+
 2001-01-09  Dan Harkless  <wget@harkless.org>
 
 	* html-url.c: A bunch of fixup of `--page-requisites'-related
diff --git a/src/connect.c b/src/connect.c
index 6078f599..ddaaf992 100644
--- a/src/connect.c
+++ b/src/connect.c
@@ -176,8 +176,11 @@ bindport (unsigned short *port)
   DEBUGP (("Master socket fd %d bound.\n", msock));
   if (!*port)
     {
-      size_t addrlen = sizeof (struct sockaddr_in);
-      if (getsockname (msock, addr, (int *)&addrlen) < 0)
+      /* #### addrlen should be a 32-bit type, which int is not
+         guaranteed to be.  Oh, and don't try to make it a size_t,
+         because that can be 64-bit.  */
+      int addrlen = sizeof (struct sockaddr_in);
+      if (getsockname (msock, addr, &addrlen) < 0)
 	{
 	  CLOSE (msock);
 	  msock = -1;
@@ -260,7 +263,8 @@ conaddr (int fd)
   static unsigned char res[4];
   struct sockaddr_in mysrv;
   struct sockaddr *myaddr;
-  size_t addrlen = sizeof (mysrv);
+  int addrlen = sizeof (mysrv);	/* see bindport() for discussion of
+                                   using `int' here. */
 
   myaddr = (struct sockaddr *) (&mysrv);
   if (getsockname (fd, myaddr, (int *)&addrlen) < 0)