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
Block-quote the itemized list in the --stats section so that
[rsync/rsync.git]
/
socket.c
diff --git
a/socket.c
b/socket.c
index
bc61bae
..
8a96061
100644
(file)
--- a/
socket.c
+++ b/
socket.c
@@
-36,6
+36,10
@@
extern char *bind_address;
extern int default_af_hint;
extern char *bind_address;
extern int default_af_hint;
+#ifdef HAVE_SIGACTION
+static struct sigaction sigact;
+#endif
+
/**
* Establish a proxy connection on an open socket to a web proxy by
* using the CONNECT method. If proxy_user and proxy_pass are not NULL,
/**
* Establish a proxy connection on an open socket to a web proxy by
* using the CONNECT method. If proxy_user and proxy_pass are not NULL,
@@
-54,13
+58,13
@@
static int establish_proxy_connection(int fd, char *host, int port,
proxy_user, ":", proxy_pass, NULL);
len = strlen(buffer);
proxy_user, ":", proxy_pass, NULL);
len = strlen(buffer);
- if ((len*8 + 5) / 6 >= (int)sizeof authbuf) {
+ if ((len*8 + 5) / 6 >= (int)sizeof authbuf
- 3
) {
rprintf(FERROR,
"authentication information is too long\n");
return -1;
}
rprintf(FERROR,
"authentication information is too long\n");
return -1;
}
- base64_encode(buffer, len, authbuf);
+ base64_encode(buffer, len, authbuf
, 1
);
authhdr = "\r\nProxy-Authorization: Basic ";
} else {
*authbuf = '\0';
authhdr = "\r\nProxy-Authorization: Basic ";
} else {
*authbuf = '\0';
@@
-433,7
+437,9
@@
static RETSIGTYPE sigchld_handler(UNUSED(int val))
#ifdef WNOHANG
while (waitpid(-1, NULL, WNOHANG) > 0) {}
#endif
#ifdef WNOHANG
while (waitpid(-1, NULL, WNOHANG) > 0) {}
#endif
+#ifndef HAVE_SIGACTION
signal(SIGCHLD, sigchld_handler);
signal(SIGCHLD, sigchld_handler);
+#endif
}
}
@@
-442,6
+448,10
@@
void start_accept_loop(int port, int (*fn)(int, int))
fd_set deffds;
int *sp, maxfd, i;
fd_set deffds;
int *sp, maxfd, i;
+#ifdef HAVE_SIGACTION
+ sigact.sa_flags = SA_NOCLDSTOP;
+#endif
+
/* open an incoming socket */
sp = open_socket_in(SOCK_STREAM, port, bind_address, default_af_hint);
if (sp == NULL)
/* open an incoming socket */
sp = open_socket_in(SOCK_STREAM, port, bind_address, default_af_hint);
if (sp == NULL)
@@
-499,7
+509,7
@@
void start_accept_loop(int port, int (*fn)(int, int))
if (fd < 0)
continue;
if (fd < 0)
continue;
-
signal
(SIGCHLD, sigchld_handler);
+
SIGACTION
(SIGCHLD, sigchld_handler);
if ((pid = fork()) == 0) {
int ret;
if ((pid = fork()) == 0) {
int ret;