+Changes with nginx 0.7.43 18 Mar 2009
+
+ *) Bugfix: a request was handled incorrectly, if a "root" directive
+ used variables; the bug had appeared in 0.7.42.
+
+ *) Bugfix: if a server listened on wildcard address, then the
+ $server_addr variable value was "0.0.0.0"; the bug had appeared in
+ 0.7.36.
+
+
Changes with nginx 0.7.42 16 Mar 2009
*) Change: now the "Invalid argument" error returned by
setsockopt(TCP_NODELAY) on Solaris, is ignored.
*) Change: now if a file specified in a "auth_basic_user_file"
- directive is absent, then the 405 error is returned instead of the
+ directive is absent, then the 403 error is returned instead of the
500 one.
*) Feature: the "auth_basic_user_file" directive supports variables.
+éÚÍÅÎÅÎÉÑ × nginx 0.7.43 18.03.2009
+
+ *) éÓÐÒÁ×ÌÅÎÉÅ: ÚÁÐÒÏÓ ÏÂÒÁÂÁÔÙ×ÁÌÓÑ ÎÅ×ÅÒÎÏ, ÅÓÌÉ ÄÉÒÅËÔÉ×Á root
+ ÉÓÐÏÌØÚÏ×ÁÌÁ ÐÅÒÅÍÅÎÎÙÅ; ÏÛÉÂËÁ ÐÏÑ×ÉÌÁÓØ × 0.7.42.
+
+ *) éÓÐÒÁ×ÌÅÎÉÅ: ÅÓÌÉ ÓÅÒ×ÅÒ ÓÌÕÛÁÌ ÎÁ ÁÄÒÅÓÁÈ ÔÉÐÁ "*", ÔÏ ÚÎÁÞÅÎÉÅ
+ ÐÅÒÅÍÅÎÎÏÊ $server_addr ÂÙÌÏ "0.0.0.0"; ÏÛÉÂËÁ ÐÏÑ×ÉÌÁÓØ × 0.7.36.
+
+
éÚÍÅÎÅÎÉÑ × nginx 0.7.42 16.03.2009
*) éÚÍÅÎÅÎÉÅ: ÏÛÉÂËÁ "Invalid argument", ×ÏÚ×ÒÁÝÁÅÍÁÑ
#define _NGINX_H_INCLUDED_
-#define NGINX_VERSION "0.7.42"
+#define NGINX_VERSION "0.7.43"
#define NGINX_VER "nginx/" NGINX_VERSION
#define NGINX_VAR "NGINX"
ngx_str_t *value;
ngx_uint_t n;
- ngx_http_core_loc_conf_t *clcf;
ngx_http_script_compile_t sc;
- clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
-
if (alcf->user_file.data) {
return "is duplicate";
}
HTTP_INSUFFICIENT_STORAGE
);
-our $VERSION = '0.7.42';
+our $VERSION = '0.7.43';
require XSLoader;
XSLoader::load('nginx', $VERSION);
last = ngx_copy(path->data, clcf->root.data, clcf->root.len);
} else {
- if (ngx_http_script_run(r, path, clcf->root_lengths->elts, ++reserved,
+ reserved += alias ? 1 : r->uri.len + 1;
+
+ if (ngx_http_script_run(r, path, clcf->root_lengths->elts, reserved,
clcf->root_values->elts)
== NULL)
{
ngx_int_t
ngx_http_server_addr(ngx_http_request_t *r, ngx_str_t *s)
{
- socklen_t len;
- ngx_connection_t *c;
- u_char sa[NGX_SOCKADDRLEN];
+ socklen_t len;
+ ngx_uint_t addr;
+ ngx_connection_t *c;
+ u_char sa[NGX_SOCKADDRLEN];
+ struct sockaddr_in *sin;
+#if (NGX_HAVE_INET6)
+ ngx_uint_t i;
+ struct sockaddr_in6 *sin6;
+#endif
c = r->connection;
- if (c->local_sockaddr == NULL) {
+ switch (c->local_sockaddr->sa_family) {
+
+#if (NGX_HAVE_INET6)
+ case AF_INET6:
+ sin6 = (struct sockaddr_in6 *) c->local_sockaddr;
+
+ for (addr = 0, i = 0; addr == 0 && i < 16; i++) {
+ addr |= sin6->sin6_addr.s6_addr[i];
+ }
+
+ break;
+#endif
+
+ default: /* AF_INET */
+ sin = (struct sockaddr_in *) c->local_sockaddr;
+ addr = sin->sin_addr.s_addr;
+ break;
+ }
+
+ if (addr == 0) {
len = NGX_SOCKADDRLEN;
* is required to determine a server address
*/
- c->local_sockaddr = NULL;
-
if (ngx_http_server_addr(r, NULL) != NGX_OK) {
ngx_http_close_connection(c);
return;