X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/9dce9b45b3fb2417fd09264ae085e6c89572d058..e30f065766d103b47aaccbe777308e0d2381fd6e:/socket.c diff --git a/socket.c b/socket.c index 9c86c498..9a619515 100644 --- a/socket.c +++ b/socket.c @@ -89,10 +89,11 @@ static int establish_proxy_connection(int fd, char *host, int port) /* open a socket to a tcp remote host with the specified port based on code from Warren proxy support by Stephen Rothwell */ -int open_socket_out(char *host, int port) +int open_socket_out(char *host, int port, struct in_addr *address) { int type = SOCK_STREAM; struct sockaddr_in sock_out; + struct sockaddr_in sock; int res; struct hostent *hp; char *h; @@ -137,6 +138,13 @@ int open_socket_out(char *host, int port) sock_out.sin_port = htons(p); sock_out.sin_family = PF_INET; + if (address) { + sock.sin_addr = *address; + sock.sin_port = 0; + sock.sin_family = hp->h_addrtype; + bind(res, (struct sockaddr * ) &sock,sizeof(sock)); + } + if (connect(res,(struct sockaddr *)&sock_out,sizeof(sock_out))) { rprintf(FERROR,"failed to connect to %s - %s\n", h, strerror(errno)); close(res);