changeset 4813:5c47ecaef07a

mail_core: don't let the well-known port in the "listen" directive to override the already set "protocol".
author Ruslan Ermilov <ru@nginx.com>
date Wed, 15 Aug 2012 11:30:24 +0000
parents 785ae4de268b
children 0656cfe8f7cb
files src/mail/ngx_mail_core_module.c
diffstat 1 files changed, 17 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/src/mail/ngx_mail_core_module.c
+++ b/src/mail/ngx_mail_core_module.c
@@ -378,21 +378,23 @@ ngx_mail_core_listen(ngx_conf_t *cf, ngx
     ls->ipv6only = 1;
 #endif
 
-    for (m = 0; ngx_modules[m]; m++) {
-        if (ngx_modules[m]->type != NGX_MAIL_MODULE) {
-            continue;
-        }
-
-        module = ngx_modules[m]->ctx;
-
-        if (module->protocol == NULL) {
-            continue;
-        }
-
-        for (i = 0; module->protocol->port[i]; i++) {
-            if (module->protocol->port[i] == u.port) {
-                cscf->protocol = module->protocol;
-                break;
+    if (cscf->protocol == NULL) {
+        for (m = 0; ngx_modules[m]; m++) {
+            if (ngx_modules[m]->type != NGX_MAIL_MODULE) {
+                continue;
+            }
+    
+            module = ngx_modules[m]->ctx;
+    
+            if (module->protocol == NULL) {
+                continue;
+            }
+    
+            for (i = 0; module->protocol->port[i]; i++) {
+                if (module->protocol->port[i] == u.port) {
+                    cscf->protocol = module->protocol;
+                    break;
+                }
             }
         }
     }