Two more instances of socklen_t.
[rsync/rsync.git] / socket.c
index 7865e31..00a0b94 100644 (file)
--- a/socket.c
+++ b/socket.c
@@ -210,6 +210,10 @@ static int open_socket_in(int type, int port, struct in_addr *address)
        if (bind(res, (struct sockaddr * ) &sock,sizeof(sock)) == -1) { 
                rprintf(FERROR,"bind failed on port %d: %s\n", port,
                        strerror(errno));
+               if (errno == EACCES && port < 1024) {
+                       rprintf(FERROR, "Note: you must be root to bind "
+                               "to low-numbered ports");
+               }
                close(res); 
                return -1;
        }
@@ -223,13 +227,14 @@ static int open_socket_in(int type, int port, struct in_addr *address)
  */
 int is_a_socket(int fd)
 {
-       int v, l;
+       int v;
+       socklen_t l;
        l = sizeof(int);
 
         /* Parameters to getsockopt, setsockopt etc are very
          * unstandardized across platforms, so don't be surprised if
-         * there are compiler warnings on e.g. SCO OpenSwerver.  It
-         * seems they all eventually get the right idea.
+         * there are compiler warnings on e.g. SCO OpenSwerver or AIX.
+         * It seems they all eventually get the right idea.
          *
          * Debian says: ``The fifth argument of getsockopt and
          * setsockopt is in reality an int [*] (and this is what BSD
@@ -266,7 +271,7 @@ void start_accept_loop(int port, int (*fn)(int ))
                fd_set fds;
                int fd;
                struct sockaddr addr;
-               int in_addrlen = sizeof(addr);
+               socklen_t in_addrlen = sizeof(addr);
 
                /* close log file before the potentially very long select so
                   file can be trimmed by another process instead of growing
@@ -283,7 +288,7 @@ void start_accept_loop(int port, int (*fn)(int ))
                if(!FD_ISSET(s, &fds)) continue;
 
                 /* See note above prototypes. */
-               fd = accept(s,&addr,&in_addrlen);
+               fd = accept(s,&addr, &in_addrlen);
 
                if (fd == -1) continue;
 
@@ -477,7 +482,7 @@ char *client_name(int fd)
 {
        struct sockaddr sa;
        struct sockaddr_in *sockin = (struct sockaddr_in *) (&sa);
-       int     length = sizeof(sa);
+       socklen_t length = sizeof(sa);
        static char name_buf[100];
        struct hostent *hp;
        char **p;