changeset 20803:0bddf1154654

master: Removed hardcoded listen() backlog limit. If it's already too large, the kernel will truncate it automatically. So there shouldn't be any reason for us to explicitly limit it.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Tue, 27 Sep 2016 15:50:11 +0300
parents 61a009de2cff
children 5332b9d8315c
files src/master/service-listen.c
diffstat 1 files changed, 3 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/master/service-listen.c	Mon Sep 26 15:38:27 2016 +0300
+++ b/src/master/service-listen.c	Tue Sep 27 15:50:11 2016 +0300
@@ -18,7 +18,6 @@
 #include <sys/socket.h>
 
 #define MIN_BACKLOG 4
-#define MAX_BACKLOG 511
 
 static unsigned int service_get_backlog(struct service *service)
 {
@@ -28,14 +27,10 @@
 	i_assert(service->client_limit > 0);
 
 	/* as unlikely as it is, avoid overflows */
-	if (service->process_limit > MAX_BACKLOG ||
-	    service->client_limit > MAX_BACKLOG)
-		backlog = MAX_BACKLOG;
-	else {
+	if (service->client_limit > INT_MAX / service->process_limit)
+		backlog = INT_MAX;
+	else
 		backlog = service->process_limit * service->client_limit;
-		if (backlog > MAX_BACKLOG)
-			backlog = MAX_BACKLOG;
-	}
 	return I_MAX(backlog, MIN_BACKLOG);
 }