Commit 660c6fbd authored by Martin Pool's avatar Martin Pool

Include strerror message when there's a socket error.

parent ce6c7c63
/* -*- c-file-style: "linux" -*- /* -*- c-file-style: "linux" -*-
Copyright (C) 1998-2000 by Andrew Tridgell Copyright (C) 1998-2001 by Andrew Tridgell
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
...@@ -25,8 +25,8 @@ ...@@ -25,8 +25,8 @@
#include "rsync.h" #include "rsync.h"
/* establish a proxy connection on an open socket to a web roxy by using the CONNECT /* Establish a proxy connection on an open socket to a web roxy by
method */ * using the CONNECT method. */
static int establish_proxy_connection(int fd, char *host, int port) static int establish_proxy_connection(int fd, char *host, int port)
{ {
char buffer[1024]; char buffer[1024];
...@@ -34,14 +34,15 @@ static int establish_proxy_connection(int fd, char *host, int port) ...@@ -34,14 +34,15 @@ static int establish_proxy_connection(int fd, char *host, int port)
slprintf(buffer, sizeof(buffer), "CONNECT %s:%d HTTP/1.0\r\n\r\n", host, port); slprintf(buffer, sizeof(buffer), "CONNECT %s:%d HTTP/1.0\r\n\r\n", host, port);
if (write(fd, buffer, strlen(buffer)) != strlen(buffer)) { if (write(fd, buffer, strlen(buffer)) != strlen(buffer)) {
rprintf(FERROR, "failed to write to proxy - %s\n", rprintf(FERROR, "failed to write to proxy: %s\n",
strerror(errno)); strerror(errno));
return -1; return -1;
} }
for (cp = buffer; cp < &buffer[sizeof(buffer) - 1]; cp++) { for (cp = buffer; cp < &buffer[sizeof(buffer) - 1]; cp++) {
if (read(fd, cp, 1) != 1) { if (read(fd, cp, 1) != 1) {
rprintf(FERROR, "failed to read from proxy\n"); rprintf(FERROR, "failed to read from proxy: %s\n",
strerror(errno));
return -1; return -1;
} }
if (*cp == '\n') if (*cp == '\n')
...@@ -72,7 +73,8 @@ static int establish_proxy_connection(int fd, char *host, int port) ...@@ -72,7 +73,8 @@ static int establish_proxy_connection(int fd, char *host, int port)
for (cp = buffer; cp < &buffer[sizeof(buffer) - 1]; for (cp = buffer; cp < &buffer[sizeof(buffer) - 1];
cp++) { cp++) {
if (read(fd, cp, 1) != 1) { if (read(fd, cp, 1) != 1) {
rprintf(FERROR, "failed to read from proxy\n"); rprintf(FERROR, "failed to read from proxy: %s\n",
strerror(errno));
return -1; return -1;
} }
if (*cp == '\n') if (*cp == '\n')
...@@ -103,8 +105,9 @@ int open_socket_out(char *host, int port, struct in_addr *address) ...@@ -103,8 +105,9 @@ int open_socket_out(char *host, int port, struct in_addr *address)
char buffer[1024]; char buffer[1024];
char *cp; char *cp;
/* if we have a RSYNC_PROXY env variable then redirect our connetcion via a web proxy /* if we have a RSYNC_PROXY env variable then redirect our
at the given address. The format is hostname:port */ * connetcion via a web proxy at the given address. The format
* is hostname:port */
h = getenv("RSYNC_PROXY"); h = getenv("RSYNC_PROXY");
proxied = (h != NULL) && (*h != '\0'); proxied = (h != NULL) && (*h != '\0');
...@@ -112,7 +115,8 @@ int open_socket_out(char *host, int port, struct in_addr *address) ...@@ -112,7 +115,8 @@ int open_socket_out(char *host, int port, struct in_addr *address)
strlcpy(buffer, h, sizeof(buffer)); strlcpy(buffer, h, sizeof(buffer));
cp = strchr(buffer, ':'); cp = strchr(buffer, ':');
if (cp == NULL) { if (cp == NULL) {
rprintf(FERROR, "invalid proxy specification\n"); rprintf(FERROR,
"invalid proxy specification: should be HOST:PORT\n");
return -1; return -1;
} }
*cp++ = '\0'; *cp++ = '\0';
...@@ -195,7 +199,8 @@ static int open_socket_in(int type, int port, struct in_addr *address) ...@@ -195,7 +199,8 @@ static int open_socket_in(int type, int port, struct in_addr *address)
} }
res = socket(hp->h_addrtype, type, 0); res = socket(hp->h_addrtype, type, 0);
if (res == -1) { if (res == -1) {
rprintf(FERROR,"socket failed\n"); rprintf(FERROR,"socket failed: %s\n",
strerror(errno));
return -1; return -1;
} }
...@@ -203,7 +208,8 @@ static int open_socket_in(int type, int port, struct in_addr *address) ...@@ -203,7 +208,8 @@ static int open_socket_in(int type, int port, struct in_addr *address)
/* now we've got a socket - we need to bind it */ /* now we've got a socket - we need to bind it */
if (bind(res, (struct sockaddr * ) &sock,sizeof(sock)) == -1) { if (bind(res, (struct sockaddr * ) &sock,sizeof(sock)) == -1) {
rprintf(FERROR,"bind failed on port %d\n", port); rprintf(FERROR,"bind failed on port %d: %s\n", port,
strerror(errno));
close(res); close(res);
return -1; return -1;
} }
...@@ -402,7 +408,8 @@ void set_socket_options(int fd, char *options) ...@@ -402,7 +408,8 @@ void set_socket_options(int fd, char *options)
} }
if (ret != 0) if (ret != 0)
rprintf(FERROR,"Failed to set socket option %s\n",tok); rprintf(FERROR, "failed to set socket option %s: %s\n", tok,
strerror(errno));
} }
free(options); free(options);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment