comparison src/http/ngx_http_variables.c @ 1805:bb72f7518992

use ngx_http_server_addr()
author Igor Sysoev <igor@sysoev.ru>
date Sat, 29 Dec 2007 16:00:34 +0000
parents 4c43e25d11ea
children 0d9c6fe7502b
comparison
equal deleted inserted replaced
1804:d457a1576532 1805:bb72f7518992
806 806
807 static ngx_int_t 807 static ngx_int_t
808 ngx_http_variable_server_addr(ngx_http_request_t *r, 808 ngx_http_variable_server_addr(ngx_http_request_t *r,
809 ngx_http_variable_value_t *v, uintptr_t data) 809 ngx_http_variable_value_t *v, uintptr_t data)
810 { 810 {
811 socklen_t len; 811 ngx_str_t s;
812 ngx_connection_t *c; 812
813 struct sockaddr_in sin; 813 s.data = ngx_palloc(r->pool, INET_ADDRSTRLEN);
814 814 if (s.data == NULL) {
815 v->data = ngx_palloc(r->pool, INET_ADDRSTRLEN);
816 if (v->data == NULL) {
817 return NGX_ERROR; 815 return NGX_ERROR;
818 } 816 }
819 817
820 c = r->connection; 818 if (ngx_http_server_addr(r, &s) != NGX_OK) {
821 819 return NGX_ERROR;
822 if (r->in_addr == 0) { 820 }
823 len = sizeof(struct sockaddr_in); 821
824 if (getsockname(c->fd, (struct sockaddr *) &sin, &len) == -1) { 822 v->len = s.len;
825 ngx_connection_error(c, ngx_socket_errno, "getsockname() failed"); 823 v->valid = 1;
826 return NGX_ERROR; 824 v->no_cacheable = 0;
827 } 825 v->not_found = 0;
828 826 v->data = s.data;
829 r->in_addr = sin.sin_addr.s_addr;
830 }
831
832 v->len = ngx_inet_ntop(c->listening->family, &r->in_addr,
833 v->data, INET_ADDRSTRLEN);
834 v->valid = 1;
835 v->no_cacheable = 0;
836 v->not_found = 0;
837 827
838 return NGX_OK; 828 return NGX_OK;
839 } 829 }
840 830
841 831