Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
updated config scripts from subversion
[rsync/rsync.git]
/
socket.c
diff --git
a/socket.c
b/socket.c
index
2aa8481
..
ad208ef
100644
(file)
--- a/
socket.c
+++ b/
socket.c
@@
-1,6
+1,6
@@
/* -*- c-file-style: "linux" -*-
/* -*- c-file-style: "linux" -*-
- Copyright (C) 1998-200
0
by Andrew Tridgell
+ Copyright (C) 1998-200
1
by Andrew Tridgell
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
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
@@
-25,23
+25,24
@@
#include "rsync.h"
#include "rsync.h"
-/*
establish a proxy connection on an open socket to a web roxy by using the CONNECT
-
method
*/
+/*
Establish a proxy connection on an open socket to a web roxy by
+
* using the CONNECT method.
*/
static int establish_proxy_connection(int fd, char *host, int port)
{
char buffer[1024];
char *cp;
static int establish_proxy_connection(int fd, char *host, int port)
{
char buffer[1024];
char *cp;
- s
l
printf(buffer, sizeof(buffer), "CONNECT %s:%d HTTP/1.0\r\n\r\n", host, port);
+ s
n
printf(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));
return -1;
}
for (cp = buffer; cp < &buffer[sizeof(buffer) - 1]; cp++) {
if (read(fd, cp, 1) != 1) {
strerror(errno));
return -1;
}
for (cp = buffer; cp < &buffer[sizeof(buffer) - 1]; cp++) {
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;
}
if (*cp == '\n')
return -1;
}
if (*cp == '\n')
@@
-72,7
+73,8
@@
static int establish_proxy_connection(int fd, char *host, int port)
for (cp = buffer; cp < &buffer[sizeof(buffer) - 1];
cp++) {
if (read(fd, cp, 1) != 1) {
for (cp = buffer; cp < &buffer[sizeof(buffer) - 1];
cp++) {
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;
}
if (*cp == '\n')
return -1;
}
if (*cp == '\n')
@@
-103,8
+105,9
@@
int open_socket_out(char *host, int port, struct in_addr *address)
char buffer[1024];
char *cp;
char buffer[1024];
char *cp;
- /* if we have a RSYNC_PROXY env variable then redirect our connetcion via a web proxy
- at the given address. The format is hostname:port */
+ /* if we have a RSYNC_PROXY env variable then redirect our
+ * connetcion via a web proxy at the given address. The format
+ * is hostname:port */
h = getenv("RSYNC_PROXY");
proxied = (h != NULL) && (*h != '\0');
h = getenv("RSYNC_PROXY");
proxied = (h != NULL) && (*h != '\0');
@@
-112,7
+115,8
@@
int open_socket_out(char *host, int port, struct in_addr *address)
strlcpy(buffer, h, sizeof(buffer));
cp = strchr(buffer, ':');
if (cp == NULL) {
strlcpy(buffer, h, sizeof(buffer));
cp = strchr(buffer, ':');
if (cp == NULL) {
- rprintf(FERROR, "invalid proxy specification\n");
+ rprintf(FERROR,
+ "invalid proxy specification: should be HOST:PORT\n");
return -1;
}
*cp++ = '\0';
return -1;
}
*cp++ = '\0';
@@
-195,7
+199,8
@@
static int open_socket_in(int type, int port, struct in_addr *address)
}
res = socket(hp->h_addrtype, type, 0);
if (res == -1) {
}
res = socket(hp->h_addrtype, type, 0);
if (res == -1) {
- rprintf(FERROR,"socket failed\n");
+ rprintf(FERROR,"socket failed: %s\n",
+ strerror(errno));
return -1;
}
return -1;
}
@@
-203,7
+208,12
@@
static int open_socket_in(int type, int port, struct in_addr *address)
/* now we've got a socket - we need to bind it */
if (bind(res, (struct sockaddr * ) &sock,sizeof(sock)) == -1) {
/* now we've got a socket - we need to bind it */
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));
+ if (errno == EACCES && port < 1024) {
+ rprintf(FERROR, "Note: you must be root to bind "
+ "to low-numbered ports");
+ }
close(res);
return -1;
}
close(res);
return -1;
}
@@
-402,7
+412,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);