]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
master: Added back "listen" setting, which is the default address for inet_listeners.
authorTimo Sirainen <tss@iki.fi>
Fri, 9 Oct 2009 21:55:57 +0000 (17:55 -0400)
committerTimo Sirainen <tss@iki.fi>
Fri, 9 Oct 2009 21:55:57 +0000 (17:55 -0400)
--HG--
branch : HEAD

doc/example-config/conf.d/master.conf
doc/example-config/dovecot.conf
src/master/master-settings.c
src/master/master-settings.h
src/master/service-listen.c
src/master/service.c
src/master/service.h

index 2f2d19ce548fe6e51040d32c38f8e9319958da7e..17ead38999a93c86526d6d4251c216848cd7610d 100644 (file)
@@ -70,11 +70,9 @@ service imap-login {
   auth_dest_service = imap
 
   inet_listener {
-    address = *, ::
     port = 143
   }
   inet_listener {
-    address = *, ::
     port = 993
     ssl = yes
   }
@@ -115,11 +113,9 @@ service pop3-login {
   auth_dest_service = pop3
 
   inet_listener {
-    address = *, ::
     port = 110
   }
   inet_listener {
-    address = *, ::
     port = 995
     ssl = yes
   }
index 6fad272f626d48f8070717029ddf80edf9ddd62a..0ca9341886b1569ff661c782594d682c4e31e7e7 100644 (file)
 # Protocols we want to be serving.
 #protocols = imap pop3 lmtp
 
+# A space separated list of IP or host addresses where to listen in for
+# connections. "*" listens in all IPv4 interfaces. "[::]" listens in all IPv6
+# interfaces. Use "*, [::]" for listening both IPv4 and IPv6. If you want to
+# specify non-default ports or anything more complex, edit conf.d/master.conf.
+#listen = *
+
 # Disable LOGIN command and all other plaintext authentications unless
 # SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP
 # matches the local IP (ie. you're connecting from the same computer), the
index 611b7d2b958c80e347ef1a6d48e6f7f5abedb9a0..4f1c58133e8203516f2d1f8e92686572399300eb 100644 (file)
@@ -166,6 +166,7 @@ static struct setting_define master_setting_defines[] = {
        DEF(SET_STR, base_dir),
        DEF(SET_STR, libexec_dir),
        DEF(SET_STR, protocols),
+       DEF(SET_STR, listen),
        DEF(SET_ENUM, ssl),
        DEF(SET_UINT, default_process_limit),
        DEF(SET_UINT, default_client_limit),
@@ -190,6 +191,7 @@ static struct master_settings master_default_settings = {
        MEMBER(base_dir) PKG_RUNDIR,
        MEMBER(libexec_dir) PKG_LIBEXECDIR,
        MEMBER(protocols) "imap pop3 lmtp",
+       MEMBER(listen) "*, ::",
        MEMBER(ssl) "yes:no:required",
        MEMBER(default_process_limit) 100,
        MEMBER(default_client_limit) 1000,
index 45a923049e2ebec7d5ef47857495acd97b13c7a3..f1e9e10db19fff567bd2106e5e94a43fae1a834d 100644 (file)
@@ -46,6 +46,7 @@ struct master_settings {
        const char *base_dir;
        const char *libexec_dir;
        const char *protocols;
+       const char *listen;
        const char *ssl;
        unsigned int default_process_limit;
        unsigned int default_client_limit;
index d7bbb31880780e4887f840fb069e46689bfcac96..ec53da1dbb70f3e9eae2916ecd40f31039882ecd 100644 (file)
@@ -128,7 +128,7 @@ static int service_inet_listener_listen(struct service_listener *l)
        fd = net_listen(&l->set.inetset.ip, &port, 128);
        if (fd < 0) {
                service_error(service, "listen(%s, %u) failed: %m",
-                             set->address, set->port);
+                             l->inet_address, set->port);
                return errno == EADDRINUSE ? 0 : -1;
        }
        net_set_nonblock(fd, TRUE);
index d2d8cbe4340f12e82dc5f3c3691adf51557be7f5..91469d0c1703a71a1d114fe74ac163f1c8b5c35a 100644 (file)
@@ -105,6 +105,7 @@ service_create_one_inet_listener(struct service *service,
        l->type = SERVICE_LISTENER_INET;
        l->fd = -1;
        l->set.inetset.set = set;
+       l->inet_address = p_strdup(service->list->pool, address);
 
        if (resolve_ip(address, &l->set.inetset.ip, error_r) < 0)
                return NULL;
@@ -127,10 +128,17 @@ service_create_inet_listeners(struct service *service,
                              const char **error_r)
 {
        static struct service_listener *l;
-       const char *const *tmp;
+       const char *const *tmp, *addresses;
        bool ssl_disabled = strcmp(service->set->master_set->ssl, "no") == 0;
 
-       tmp = t_strsplit_spaces(set->address, ", ");
+       if (*set->address != '\0')
+               addresses = set->address;
+       else {
+               /* use the default listen address */
+               addresses = service->set->master_set->listen;
+       }
+
+       tmp = t_strsplit_spaces(addresses, ", ");
        for (; *tmp != NULL; tmp++) {
                if (set->ssl && ssl_disabled)
                        continue;
index da5425345892335b6489f130bbb347b6c7e3a239..5b0238dde6bb127e4ba315c8dcd20fd5fa9cfdab 100644 (file)
@@ -31,6 +31,8 @@ struct service_listener {
        int fd; /* may be -1 */
        struct io *io;
 
+       const char *inet_address;
+
        union {
                struct {
                        const struct file_listener_settings *set;