Mercurial > hg > nginx-mail
comparison src/mail/ngx_mail_auth_http_module.c @ 665:0b460e61bdcd default tip
Merge with nginx 1.0.0.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 25 Apr 2011 04:22:17 +0400 |
parents | 9773720b845e 8246d8a2c2be |
children |
comparison
equal
deleted
inserted
replaced
572:06419a2298a9 | 665:0b460e61bdcd |
---|---|
10 #include <ngx_event_connect.h> | 10 #include <ngx_event_connect.h> |
11 #include <ngx_mail.h> | 11 #include <ngx_mail.h> |
12 | 12 |
13 | 13 |
14 typedef struct { | 14 typedef struct { |
15 ngx_peer_addr_t *peer; | 15 ngx_addr_t *peer; |
16 | 16 |
17 ngx_msec_t timeout; | 17 ngx_msec_t timeout; |
18 | 18 |
19 ngx_str_t host_header; | 19 ngx_str_t host_header; |
20 ngx_str_t uri; | 20 ngx_str_t uri; |
455 { | 455 { |
456 u_char *p; | 456 u_char *p; |
457 time_t timer; | 457 time_t timer; |
458 size_t len, size; | 458 size_t len, size; |
459 ngx_int_t rc, port, n; | 459 ngx_int_t rc, port, n; |
460 ngx_peer_addr_t *peer; | 460 ngx_addr_t *peer; |
461 struct sockaddr_in *sin; | 461 struct sockaddr_in *sin; |
462 | 462 |
463 ngx_log_debug0(NGX_LOG_DEBUG_MAIL, s->connection->log, 0, | 463 ngx_log_debug0(NGX_LOG_DEBUG_MAIL, s->connection->log, 0, |
464 "mail auth http process headers"); | 464 "mail auth http process headers"); |
465 | 465 |
762 ngx_destroy_pool(ctx->pool); | 762 ngx_destroy_pool(ctx->pool); |
763 ngx_mail_session_internal_server_error(s); | 763 ngx_mail_session_internal_server_error(s); |
764 return; | 764 return; |
765 } | 765 } |
766 | 766 |
767 peer = ngx_pcalloc(s->connection->pool, sizeof(ngx_peer_addr_t)); | 767 peer = ngx_pcalloc(s->connection->pool, sizeof(ngx_addr_t)); |
768 if (peer == NULL) { | 768 if (peer == NULL) { |
769 ngx_destroy_pool(ctx->pool); | 769 ngx_destroy_pool(ctx->pool); |
770 ngx_mail_session_internal_server_error(s); | 770 ngx_mail_session_internal_server_error(s); |
771 return; | 771 return; |
772 } | 772 } |
793 return; | 793 return; |
794 } | 794 } |
795 | 795 |
796 sin->sin_port = htons((in_port_t) port); | 796 sin->sin_port = htons((in_port_t) port); |
797 | 797 |
798 ctx->addr.data[ctx->addr.len] = '\0'; | 798 sin->sin_addr.s_addr = ngx_inet_addr(ctx->addr.data, ctx->addr.len); |
799 sin->sin_addr.s_addr = inet_addr((char *) ctx->addr.data); | |
800 if (sin->sin_addr.s_addr == INADDR_NONE) { | 799 if (sin->sin_addr.s_addr == INADDR_NONE) { |
801 ngx_log_error(NGX_LOG_ERR, s->connection->log, 0, | 800 ngx_log_error(NGX_LOG_ERR, s->connection->log, 0, |
802 "auth http server %V sent invalid server " | 801 "auth http server %V sent invalid server " |
803 "address:\"%V\"", | 802 "address:\"%V\"", |
804 ctx->peer.name, &ctx->addr); | 803 ctx->peer.name, &ctx->addr); |
1404 return NGX_CONF_ERROR; | 1403 return NGX_CONF_ERROR; |
1405 } | 1404 } |
1406 | 1405 |
1407 ahcf->peer = u.addrs; | 1406 ahcf->peer = u.addrs; |
1408 | 1407 |
1409 ahcf->host_header = u.host; | 1408 if (u.family != AF_UNIX) { |
1409 ahcf->host_header = u.host; | |
1410 | |
1411 } else { | |
1412 ngx_str_set(&ahcf->host_header, "localhost"); | |
1413 } | |
1414 | |
1410 ahcf->uri = u.uri; | 1415 ahcf->uri = u.uri; |
1411 | 1416 |
1412 if (ahcf->uri.len == 0) { | 1417 if (ahcf->uri.len == 0) { |
1413 ahcf->uri.len = sizeof("/") - 1; | 1418 ngx_str_set(&ahcf->uri, "/"); |
1414 ahcf->uri.data = (u_char *) "/"; | |
1415 } | 1419 } |
1416 | 1420 |
1417 return NGX_CONF_OK; | 1421 return NGX_CONF_OK; |
1418 } | 1422 } |
1419 | 1423 |