Mercurial > hg > nginx
annotate src/core/ngx_unix_domain.c @ 573:58475592100c release-0.3.8
nginx-0.3.8-RELEASE import
*) Security: nginx now checks URI got from a backend in
"X-Accel-Redirect" header line or in SSI file for the "/../" paths
and zeroes.
*) Change: nginx now does not treat the empty user name in the
"Authorization" header line as valid one.
*) Feature: the "ssl_session_timeout" directives of the
ngx_http_ssl_module and ngx_imap_ssl_module.
*) Feature: the "auth_http_header" directive of the
ngx_imap_auth_http_module.
*) Feature: the "add_header" directive.
*) Feature: the ngx_http_realip_module.
*) Feature: the new variables to use in the "log_format" directive:
$bytes_sent, $apache_bytes_sent, $status, $time_gmt, $uri,
$request_time, $request_length, $upstream_status,
$upstream_response_time, $gzip_ratio, $uid_got, $uid_set,
$connection, $pipe, and $msec. The parameters in the "%name" form
will be canceled soon.
*) Change: now the false variable values in the "if" directive are the
empty string "" and string starting with "0".
*) Bugfix: while using proxied or FastCGI-server nginx may leave
connections and temporary files with client requests in open state.
*) Bugfix: the worker processes did not flush the buffered logs on
graceful exit.
*) Bugfix: if the request URI was changes by the "rewrite" directive
and the request was proxied in location given by regular expression,
then the incorrect request was transferred to backend; the bug had
appeared in 0.2.6.
*) Bugfix: the "expires" directive did not remove the previous
"Expires" header.
*) Bugfix: nginx may stop to accept requests if the "rtsig" method and
several worker processes were used.
*) Bugfix: the "\"" and "\'" escape symbols were incorrectly handled in
SSI commands.
*) Bugfix: if the response was ended just after the SSI command and
gzipping was used, then the response did not transferred complete or
did not transferred at all.
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 09 Nov 2005 17:25:55 +0000 |
parents | 7bd37aef1e7e |
children |
rev | line source |
---|---|
479 | 1 |
2 /* | |
3 * Copyright (C) Igor Sysoev | |
4 */ | |
5 | |
6 | |
7 #include <ngx_config.h> | |
8 #include <ngx_core.h> | |
9 #include <ngx_event.h> | |
10 #include <ngx_event_connect.h> | |
11 | |
12 | |
13 /* Solaris has predefined "#define sun 1" */ | |
14 #undef sun | |
15 | |
16 | |
509 | 17 ngx_peers_t * |
18 ngx_unix_upstream_parse(ngx_conf_t *cf, ngx_unix_domain_upstream_t *u) | |
479 | 19 { |
20 size_t len; | |
21 ngx_uint_t i; | |
22 ngx_peers_t *peers; | |
23 struct sockaddr_un *sun; | |
24 | |
25 len = u->url.len - 5; | |
26 | |
27 if (u->uri_part) { | |
28 for (i = 5; i < u->url.len; i++) { | |
29 if (u->url.data[i] == ':') { | |
30 len = i - 5; | |
31 u->uri.len = u->url.len - 5 - len - 1; | |
32 u->uri.data = u->url.data + 5 + len + 1; | |
33 | |
34 break; | |
35 } | |
36 } | |
37 } | |
38 | |
39 if (len == 0) { | |
40 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, | |
41 "the unix domain socket \"%V\" has no path", | |
42 &u->name); | |
43 return NULL; | |
44 } | |
45 | |
46 if (len + 1 > sizeof(sun->sun_path)) { | |
47 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, | |
48 "the unix domain socket path \"%V\" is too long", | |
49 &u->name); | |
50 return NULL; | |
51 } | |
52 | |
53 /* MP: ngx_shared_palloc() */ | |
54 | |
501 | 55 peers = ngx_pcalloc(cf->pool, sizeof(ngx_peers_t)); |
56 if (peers == NULL) { | |
479 | 57 return NULL; |
58 } | |
59 | |
501 | 60 sun = ngx_pcalloc(cf->pool, sizeof(struct sockaddr_un)); |
61 if (sun == NULL) { | |
479 | 62 return NULL; |
63 } | |
64 | |
65 peers->number = 1; | |
66 | |
67 sun->sun_family = AF_UNIX; | |
517 | 68 (void) ngx_cpystrn((u_char *) sun->sun_path, u->url.data + 5, len + 1); |
479 | 69 |
70 peers->peer[0].sockaddr = (struct sockaddr *) sun; | |
71 peers->peer[0].socklen = sizeof(struct sockaddr_un); | |
72 | |
73 peers->peer[0].name.len = 5 + len; | |
74 peers->peer[0].name.data = u->url.data; | |
75 | |
76 peers->peer[0].uri_separator = ":"; | |
77 | |
78 return peers; | |
79 } |