summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2007-09-22 18:41:35 +0000
committerIgor Sysoev <igor@sysoev.ru>2007-09-22 18:41:35 +0000
commite8c487cde3114c836f083b8ab1201889e8f383a2 (patch)
treecc265bb3b729d066e9778902aa0e98eb11aa223f
parent17daae90947bd3b7d51d14684dfc95230394933d (diff)
downloadnginx-e8c487cde3114c836f083b8ab1201889e8f383a2.tar.gz
nginx-e8c487cde3114c836f083b8ab1201889e8f383a2.tar.bz2
r1391, r1392, r1393 merge:
auth_http related changes: *) stop configuration on error *) allow "http://" in auth_http URL *) test http_auth absence
-rw-r--r--src/mail/ngx_mail_auth_http_module.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/mail/ngx_mail_auth_http_module.c b/src/mail/ngx_mail_auth_http_module.c
index c7e0fc038..52031b340 100644
--- a/src/mail/ngx_mail_auth_http_module.c
+++ b/src/mail/ngx_mail_auth_http_module.c
@@ -21,6 +21,9 @@ typedef struct {
ngx_str_t header;
ngx_array_t *headers;
+
+ u_char *file;
+ ngx_uint_t line;
} ngx_mail_auth_http_conf_t;
@@ -1311,6 +1314,9 @@ ngx_mail_auth_http_create_conf(ngx_conf_t *cf)
ahcf->timeout = NGX_CONF_UNSET_MSEC;
+ ahcf->file = cf->conf_file->file.name.data;
+ ahcf->line = cf->conf_file->line;
+
return ahcf;
}
@@ -1330,6 +1336,14 @@ ngx_mail_auth_http_merge_conf(ngx_conf_t *cf, void *parent, void *child)
conf->peer = prev->peer;
conf->host_header = prev->host_header;
conf->uri = prev->uri;
+
+ if (conf->peer == NULL) {
+ ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
+ "no \"http_auth\" is defined for server in %s:%ui",
+ conf->file, conf->line);
+
+ return NGX_CONF_ERROR;
+ }
}
ngx_conf_merge_msec_value(conf->timeout, prev->timeout, 60000);
@@ -1383,11 +1397,18 @@ ngx_mail_auth_http(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
u.uri_part = 1;
u.one_addr = 1;
+ if (ngx_strncmp(u.url.data, "http://", 7) == 0) {
+ u.url.len -= 7;
+ u.url.data += 7;
+ }
+
if (ngx_parse_url(cf, &u) != NGX_OK) {
if (u.err) {
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
"%s in auth_http \"%V\"", u.err, &u.url);
}
+
+ return NGX_CONF_ERROR;
}
ahcf->peer = u.addrs;