changeset 12357:f55b91aaddfe

director: inet_listener port finder should ignore doveadm's port.
author Timo Sirainen <tss@iki.fi>
date Tue, 02 Nov 2010 13:43:43 +0000
parents b7511f567d2e
children 4ee632794f0b
files src/director/main.c
diffstat 1 files changed, 6 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/director/main.c	Mon Nov 01 14:33:26 2010 +0000
+++ b/src/director/main.c	Tue Nov 02 13:43:43 2010 +0000
@@ -103,7 +103,9 @@
 	}
 }
 
-static unsigned int find_inet_listener_port(struct ip_addr *ip_r)
+static unsigned int
+find_inet_listener_port(struct ip_addr *ip_r,
+			const struct director_settings *set)
 {
 	unsigned int i, socket_count, port;
 
@@ -111,7 +113,8 @@
 	for (i = 0; i < socket_count; i++) {
 		int fd = MASTER_LISTEN_FD_FIRST + i;
 
-		if (net_getsockname(fd, ip_r, &port) == 0 && port > 0)
+		if (net_getsockname(fd, ip_r, &port) == 0 && port > 0 &&
+		    port != set->director_doveadm_port)
 			return port;
 	}
 	return 0;
@@ -150,7 +153,7 @@
 	userdb_socket_path = i_strconcat(set->base_dir,
 					 "/"AUTH_USERDB_SOCKET_PATH, NULL);
 
-	listen_port = find_inet_listener_port(&listen_ip);
+	listen_port = find_inet_listener_port(&listen_ip, set);
 	if (listen_port == 0 && *set->director_servers != '\0') {
 		i_fatal("No inet_listeners defined for director service "
 			"(for standalone keep director_servers empty)");