Split up the ifuncs.h file into 3 .h files.
[rsync/rsync.git] / socket.c
index 89f285a..87b1ec3 100644 (file)
--- a/socket.c
+++ b/socket.c
@@ -3,7 +3,7 @@
  *
  * Copyright (C) 1992-2001 Andrew Tridgell <tridge@samba.org>
  * Copyright (C) 2001, 2002 Martin Pool <mbp@samba.org>
- * Copyright (C) 2003-2007 Wayne Davison
+ * Copyright (C) 2003-2008 Wayne Davison
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * emulate it using the KAME implementation. */
 
 #include "rsync.h"
-#include "ifuncs.h"
+#include "itypes.h"
 #include <netinet/in_systm.h>
 #include <netinet/ip.h>
 #include <netinet/tcp.h>
 
 extern char *bind_address;
+extern char *sockopts;
 extern int default_af_hint;
 extern int connect_timeout;
 
@@ -231,7 +232,7 @@ int open_socket_out(char *host, int port, const char *bind_addr,
                }
                *cp++ = '\0';
                strlcpy(portbuf, cp, sizeof portbuf);
-               if (verbose >= 2) {
+               if (DEBUG_GTE(CONNECT, 1)) {
                        rprintf(FINFO, "connection via http proxy %s port %s\n",
                                h, portbuf);
                }
@@ -272,6 +273,7 @@ int open_socket_out(char *host, int port, const char *bind_addr,
                        alarm(connect_timeout);
                }
 
+               set_socket_options(s, sockopts);
                while (connect(s, res->ai_addr, res->ai_addrlen) < 0) {
                        if (connect_timeout < 0)
                                exit_cleanup(RERR_CONTIMEOUT);
@@ -359,7 +361,7 @@ int open_socket_out_wrapped(char *host, int port, const char *bind_addr,
                *t = '\0';
        }
 
-       if (verbose >= 2) {
+       if (DEBUG_GTE(CONNECT, 1)) {
                rprintf(FINFO, "%sopening tcp connection to %s port %d\n",
                        prog ? "Using RSYNC_CONNECT_PROG instead of " : "",
                        host, port);
@@ -433,6 +435,10 @@ static int *open_socket_in(int type, int port, const char *bind_addr,
 
                setsockopt(s, SOL_SOCKET, SO_REUSEADDR,
                           (char *)&one, sizeof one);
+               if (sockopts)
+                       set_socket_options(s, sockopts);
+               else
+                       set_socket_options(s, lp_socket_options());
 
 #ifdef IPV6_V6ONLY
                if (resp->ai_family == AF_INET6) {
@@ -467,7 +473,7 @@ static int *open_socket_in(int type, int port, const char *bind_addr,
        /* Only output the socket()/bind() messages if we were totally
         * unsuccessful, or if the daemon is being run with -vv. */
        for (s = 0; s < ecnt; s++) {
-               if (!i || verbose > 1)
+               if (!i || DEBUG_GTE(BIND, 1))
                        rwrite(FLOG, errmsgs[s], strlen(errmsgs[s]), 0);
                free(errmsgs[s]);
        }
@@ -823,7 +829,7 @@ int sock_exec(const char *prog)
                rsyserr(FERROR, errno, "socketpair_tcp failed");
                return -1;
        }
-       if (verbose >= 2)
+       if (DEBUG_GTE(CMD, 1))
                rprintf(FINFO, "Running socket program: \"%s\"\n", prog);
        if (fork() == 0) {
                close(fd[0]);