From: Andrew Tridgell Date: Fri, 17 Jul 1998 05:37:18 +0000 (+0000) Subject: use error to detect lockfile open failures vs. max connections reached X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/commitdiff_plain/8d72ef6e5258fe6a3174db822e5a6b1f7a32e252 use error to detect lockfile open failures vs. max connections reached and report an appropriate error message --- diff --git a/clientserver.c b/clientserver.c index 92d9b2c0..0723560e 100644 --- a/clientserver.c +++ b/clientserver.c @@ -132,9 +132,16 @@ static int rsync_module(int fd, int i) } if (!claim_connection(lp_lock_file(), lp_max_connections())) { - rprintf(FERROR,"max connections (%d) reached\n", - lp_max_connections()); - io_printf(fd,"@ERROR: max connections (%d) reached - try again later\n", lp_max_connections()); + if (errno) { + rprintf(FERROR,"failed to open lock file %s : %s\n", + lp_lock_file(), strerror(errno)); + io_printf(fd,"@ERROR: failed to open lock file %s : %s\n", + lp_lock_file(), strerror(errno)); + } else { + rprintf(FERROR,"max connections (%d) reached\n", + lp_max_connections()); + io_printf(fd,"@ERROR: max connections (%d) reached - try again later\n", lp_max_connections()); + } return -1; } diff --git a/connection.c b/connection.c index 1025c8fc..ec726075 100644 --- a/connection.c +++ b/connection.c @@ -29,7 +29,7 @@ int claim_connection(char *fname,int max_connections) if (max_connections <= 0) return 1; - + fd = open(fname,O_RDWR|O_CREAT, 0600); if (fd == -1) { @@ -41,6 +41,9 @@ int claim_connection(char *fname,int max_connections) if (lock_range(fd, i*4, 4)) return 1; } + /* only interested in open failures */ + errno = 0; + close(fd); return 0; }