aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Arutyunyan <arut@nginx.com>2016-08-17 11:26:51 +0300
committerRoman Arutyunyan <arut@nginx.com>2016-08-17 11:26:51 +0300
commitdabbf30377d422a0e40093e3f429fca352c633a1 (patch)
tree5352faa0d775f8dd21fd35dfcb01ce1fd66bd6fb
parenteecc68ce1787a519e4cf195f12c887d7d2ba9b0a (diff)
downloadnginx-dabbf30377d422a0e40093e3f429fca352c633a1.tar.gz
nginx-dabbf30377d422a0e40093e3f429fca352c633a1.zip
Ensure "listen" exists in a mail or stream server (ticket #1049).
-rw-r--r--src/mail/ngx_mail.h2
-rw-r--r--src/mail/ngx_mail_core_module.c9
-rw-r--r--src/stream/ngx_stream.h2
-rw-r--r--src/stream/ngx_stream_core_module.c11
4 files changed, 24 insertions, 0 deletions
diff --git a/src/mail/ngx_mail.h b/src/mail/ngx_mail.h
index 57a987e8d..1068bb368 100644
--- a/src/mail/ngx_mail.h
+++ b/src/mail/ngx_mail.h
@@ -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;
diff --git a/src/mail/ngx_mail_core_module.c b/src/mail/ngx_mail_core_module.c
index d992402b8..48eacfa28 100644
--- a/src/mail/ngx_mail_core_module.c
+++ b/src/mail/ngx_mail_core_module.c
@@ -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));
diff --git a/src/stream/ngx_stream.h b/src/stream/ngx_stream.h
index 75b784a9e..50d0363ed 100644
--- a/src/stream/ngx_stream.h
+++ b/src/stream/ngx_stream.h
@@ -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;
diff --git a/src/stream/ngx_stream_core_module.c b/src/stream/ngx_stream_core_module.c
index 70b9e2d7b..de476b091 100644
--- a/src/stream/ngx_stream_core_module.c
+++ b/src/stream/ngx_stream_core_module.c
@@ -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));