Some minor improvements in claim_connection().
diff --git a/connection.c b/connection.c
index 2bb0ae2..beb1dec 100644
--- a/connection.c
+++ b/connection.c
@@ -19,30 +19,27 @@
 
 #include "rsync.h"
 
-/****************************************************************************
-simple routine to do connection counting
-****************************************************************************/
-int claim_connection(char *fname,int max_connections)
+/* A simple routine to do connection counting.  This returns 1 on success
+ * and 0 on failure, with errno also being set if the open() failed (errno
+ * will be 0 if the lock request failed). */
+int claim_connection(char *fname, int max_connections)
 {
 	int fd, i;
 
-	if (max_connections <= 0)
-		return 1;
+	if (max_connections > 0) {
+		if ((fd = open(fname, O_RDWR|O_CREAT, 0600)) < 0)
+			return 0;
 
-	fd = open(fname,O_RDWR|O_CREAT, 0600);
+		/* Find a free spot. */
+		for (i = 0; i < max_connections; i++) {
+			if (lock_range(fd, i*4, 4))
+				return 1;
+		}
 
-	if (fd == -1) {
-		return 0;
+		close(fd);
 	}
 
-	/* find a free spot */
-	for (i=0;i<max_connections;i++) {
-		if (lock_range(fd, i*4, 4)) return 1;
-	}
-
-	/* only interested in open failures */
+	/* A lock failure needs to return an errno of 0. */
 	errno = 0;
-
-	close(fd);
 	return 0;
 }