comparison src/mail/ngx_mail_auth_http_module.c @ 1503:fa67e7914b70 stable-0.5

r1391, r1392, r1393 merge: auth_http related changes: *) stop configuration on error *) allow "http://" in auth_http URL *) test http_auth absence
author Igor Sysoev <igor@sysoev.ru>
date Sat, 22 Sep 2007 18:41:35 +0000
parents 65cebdc99554
children b19709ee1f52
comparison
equal deleted inserted replaced
1502:4fd0907c968e 1503:fa67e7914b70
19 ngx_str_t host_header; 19 ngx_str_t host_header;
20 ngx_str_t uri; 20 ngx_str_t uri;
21 ngx_str_t header; 21 ngx_str_t header;
22 22
23 ngx_array_t *headers; 23 ngx_array_t *headers;
24
25 u_char *file;
26 ngx_uint_t line;
24 } ngx_mail_auth_http_conf_t; 27 } ngx_mail_auth_http_conf_t;
25 28
26 29
27 typedef struct ngx_mail_auth_http_ctx_s ngx_mail_auth_http_ctx_t; 30 typedef struct ngx_mail_auth_http_ctx_s ngx_mail_auth_http_ctx_t;
28 31
1309 return NGX_CONF_ERROR; 1312 return NGX_CONF_ERROR;
1310 } 1313 }
1311 1314
1312 ahcf->timeout = NGX_CONF_UNSET_MSEC; 1315 ahcf->timeout = NGX_CONF_UNSET_MSEC;
1313 1316
1317 ahcf->file = cf->conf_file->file.name.data;
1318 ahcf->line = cf->conf_file->line;
1319
1314 return ahcf; 1320 return ahcf;
1315 } 1321 }
1316 1322
1317 1323
1318 static char * 1324 static char *
1328 1334
1329 if (conf->peer == NULL) { 1335 if (conf->peer == NULL) {
1330 conf->peer = prev->peer; 1336 conf->peer = prev->peer;
1331 conf->host_header = prev->host_header; 1337 conf->host_header = prev->host_header;
1332 conf->uri = prev->uri; 1338 conf->uri = prev->uri;
1339
1340 if (conf->peer == NULL) {
1341 ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
1342 "no \"http_auth\" is defined for server in %s:%ui",
1343 conf->file, conf->line);
1344
1345 return NGX_CONF_ERROR;
1346 }
1333 } 1347 }
1334 1348
1335 ngx_conf_merge_msec_value(conf->timeout, prev->timeout, 60000); 1349 ngx_conf_merge_msec_value(conf->timeout, prev->timeout, 60000);
1336 1350
1337 if (conf->headers == NULL) { 1351 if (conf->headers == NULL) {
1381 u.url = value[1]; 1395 u.url = value[1];
1382 u.default_port = 80; 1396 u.default_port = 80;
1383 u.uri_part = 1; 1397 u.uri_part = 1;
1384 u.one_addr = 1; 1398 u.one_addr = 1;
1385 1399
1400 if (ngx_strncmp(u.url.data, "http://", 7) == 0) {
1401 u.url.len -= 7;
1402 u.url.data += 7;
1403 }
1404
1386 if (ngx_parse_url(cf, &u) != NGX_OK) { 1405 if (ngx_parse_url(cf, &u) != NGX_OK) {
1387 if (u.err) { 1406 if (u.err) {
1388 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, 1407 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
1389 "%s in auth_http \"%V\"", u.err, &u.url); 1408 "%s in auth_http \"%V\"", u.err, &u.url);
1390 } 1409 }
1410
1411 return NGX_CONF_ERROR;
1391 } 1412 }
1392 1413
1393 ahcf->peer = u.addrs; 1414 ahcf->peer = u.addrs;
1394 1415
1395 ahcf->host_header = u.host; 1416 ahcf->host_header = u.host;