Added "debug_type" to the exclude_list_struct.
[rsync/rsync.git] / socket.c
index 5843325..264c532 100644 (file)
--- a/socket.c
+++ b/socket.c
@@ -48,8 +48,8 @@ static int establish_proxy_connection(int fd, char *host, int port,
        int len;
 
        if (proxy_user && proxy_pass) {
-               snprintf(buffer, sizeof buffer, "%s:%s",
-                        proxy_user, proxy_pass);
+               stringjoin(buffer, sizeof buffer,
+                        proxy_user, ":", proxy_pass, NULL);
                len = strlen(buffer);
 
                if ((len*8 + 5) / 6 >= (int)sizeof authbuf) {
@@ -299,9 +299,14 @@ int open_socket_out(char *host, int port, const char *bind_address,
 int open_socket_out_wrapped(char *host, int port, const char *bind_address,
                            int af_hint)
 {
-       char *prog;
+       char *prog = getenv("RSYNC_CONNECT_PROG");
 
-       if ((prog = getenv("RSYNC_CONNECT_PROG")) != NULL)
+       if (verbose >= 2) {
+               rprintf(FINFO, "%sopening tcp connection to %s port %d\n",
+                       prog ? "Using RSYNC_CONNECT_PROG instead of " : "",
+                       host, port);
+       }
+       if (prog)
                return sock_exec(prog);
        return open_socket_out(host, port, bind_address, af_hint);
 }
@@ -431,10 +436,10 @@ int is_a_socket(int fd)
 
 static RETSIGTYPE sigchld_handler(UNUSED(int val))
 {
-       signal(SIGCHLD, sigchld_handler);
 #ifdef WNOHANG
        while (waitpid(-1, NULL, WNOHANG) > 0) {}
 #endif
+       signal(SIGCHLD, sigchld_handler);
 }
 
 
@@ -698,7 +703,7 @@ static int socketpair_tcp(int fd[2])
                goto failed;
 
        memset(&sock2, 0, sizeof sock2);
-#ifdef HAVE_SOCKADDR_LEN
+#if HAVE_SOCKADDR_IN_LEN
        sock2.sin_len = sizeof sock2;
 #endif
        sock2.sin_family = PF_INET;
@@ -769,18 +774,14 @@ int sock_exec(const char *prog)
                        strerror(errno));
                return -1;
        }
+       if (verbose >= 2)
+               rprintf(FINFO, "Running socket program: \"%s\"\n", prog);
        if (fork() == 0) {
                close(fd[0]);
                close(0);
                close(1);
                dup(fd[1]);
                dup(fd[1]);
-               if (verbose > 3) {
-                       /* Can't use rprintf because we've forked. */
-                       fprintf(stderr,
-                               RSYNC_NAME ": execute socket program \"%s\"\n",
-                               prog);
-               }
                exit(system(prog));
        }
        close(fd[1]);