]> git.kaiwu.me - nginx.git/commitdiff
Ensure "listen" exists in a mail or stream server (ticket #1049).
authorRoman Arutyunyan <arut@nginx.com>
Wed, 17 Aug 2016 08:26:51 +0000 (11:26 +0300)
committerRoman Arutyunyan <arut@nginx.com>
Wed, 17 Aug 2016 08:26:51 +0000 (11:26 +0300)
src/mail/ngx_mail.h
src/mail/ngx_mail_core_module.c
src/stream/ngx_stream.h
src/stream/ngx_stream_core_module.c

index 57a987e8d84f5548cc776f472c91b551fd34de9e..1068bb3689600c931d76e567bcaca89bdde53b82 100644 (file)
@@ -124,6 +124,8 @@ typedef struct {
 
     /* server ctx */
     ngx_mail_conf_ctx_t    *ctx;
+
+    ngx_uint_t              listen;  /* unsigned  listen:1; */
 } ngx_mail_core_srv_conf_t;
 
 
index d992402b8d945acb94f25a16fc1f42433ffb7cfe..48eacfa28acf0f12fdae023398adfaa4d3ab8e50 100644 (file)
@@ -279,6 +279,13 @@ ngx_mail_core_server(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
 
     *cf = pcf;
 
+    if (rv == NGX_CONF_OK && !cscf->listen) {
+        ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
+                      "no \"listen\" is defined for server in %s:%ui",
+                      cscf->file_name, cscf->line);
+        return NGX_CONF_ERROR;
+    }
+
     return rv;
 }
 
@@ -295,6 +302,8 @@ ngx_mail_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
     ngx_mail_module_t          *module;
     ngx_mail_core_main_conf_t  *cmcf;
 
+    cscf->listen = 1;
+
     value = cf->args->elts;
 
     ngx_memzero(&u, sizeof(ngx_url_t));
index 75b784a9eac57483a7c8495d8f3a14e09a83825d..50d0363edee563c247ad6fb6f40f1891c5f2c22c 100644 (file)
@@ -144,6 +144,8 @@ typedef struct {
 
     ngx_msec_t                     resolver_timeout;
     ngx_resolver_t                *resolver;
+
+    ngx_uint_t                     listen;  /* unsigned  listen:1; */
 } ngx_stream_core_srv_conf_t;
 
 
index 70b9e2d7b832ba8522e062824905ddc4d066b33c..de476b0912ccdc3b49444466a0d02a6a192d0cb9 100644 (file)
@@ -325,6 +325,13 @@ ngx_stream_core_server(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
 
     *cf = pcf;
 
+    if (rv == NGX_CONF_OK && !cscf->listen) {
+        ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
+                      "no \"listen\" is defined for server in %s:%ui",
+                      cscf->file_name, cscf->line);
+        return NGX_CONF_ERROR;
+    }
+
     return rv;
 }
 
@@ -332,12 +339,16 @@ ngx_stream_core_server(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
 static char *
 ngx_stream_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
 {
+    ngx_stream_core_srv_conf_t  *cscf = conf;
+
     ngx_str_t                    *value;
     ngx_url_t                     u;
     ngx_uint_t                    i, backlog;
     ngx_stream_listen_t          *ls, *als;
     ngx_stream_core_main_conf_t  *cmcf;
 
+    cscf->listen = 1;
+
     value = cf->args->elts;
 
     ngx_memzero(&u, sizeof(ngx_url_t));