summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2011-04-12 09:04:41 +0000
committerJonathan Kolb <jon@b0g.us>2011-04-12 09:04:41 +0000
commitdf74b95bc6692977fb5fa64f4a0c062fcc03838e (patch)
tree3338b6fa9c16122f2cbf09a1063a5ca4b9640ea3
parentf241ce02a4e7971bf509ea005b4791812d54c522 (diff)
downloadnginx-df74b95bc6692977fb5fa64f4a0c062fcc03838e.tar.gz
Changes with nginx 1.0.0 12 Apr 2011v1.0.0
*) Bugfix: a cache manager might hog CPU after reload. Thanks to Maxim Dounin. *) Bugfix: an "image_filter crop" directive worked incorrectly coupled with an "image_filter rotate 180" directive. *) Bugfix: a "satisfy any" directive disabled custom 401 error page.
-rw-r--r--CHANGES11
-rw-r--r--CHANGES.ru13
-rw-r--r--src/core/nginx.h4
-rw-r--r--src/core/ngx_conf_file.c2
-rw-r--r--src/core/ngx_string.h4
-rw-r--r--src/http/modules/ngx_http_auth_basic_module.c2
-rw-r--r--src/http/modules/ngx_http_geo_module.c10
-rw-r--r--src/http/modules/ngx_http_image_filter_module.c8
-rw-r--r--src/http/modules/ngx_http_ssi_filter_module.c2
-rw-r--r--src/http/modules/perl/nginx.pm2
-rw-r--r--src/http/ngx_http_core_module.c12
-rw-r--r--src/http/ngx_http_file_cache.c9
-rw-r--r--src/http/ngx_http_script.c2
13 files changed, 59 insertions, 22 deletions
diff --git a/CHANGES b/CHANGES
index 5a4645d8e..404e0b61d 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,15 @@
+Changes with nginx 1.0.0 12 Apr 2011
+
+ *) Bugfix: a cache manager might hog CPU after reload.
+ Thanks to Maxim Dounin.
+
+ *) Bugfix: an "image_filter crop" directive worked incorrectly coupled
+ with an "image_filter rotate 180" directive.
+
+ *) Bugfix: a "satisfy any" directive disabled custom 401 error page.
+
+
Changes with nginx 0.9.7 04 Apr 2011
*) Feature: now keepalive connections may be closed premature, if there
diff --git a/CHANGES.ru b/CHANGES.ru
index 9cf6f4a20..ddac940ac 100644
--- a/CHANGES.ru
+++ b/CHANGES.ru
@@ -1,4 +1,17 @@
+Изменения в nginx 1.0.0 12.04.2011
+
+ *) Исправление: cache manager мог нагружать процессор после
+ переконфигурации.
+ Спасибо Максиму Дунину.
+
+ *) Исправление: директива "image_filter crop" неправильно работала в
+ сочетании с "image_filter rotate 180".
+
+ *) Исправление: директива "satisfy any" запрещала выдачу
+ пользовательской страницы для 401 кода.
+
+
Изменения в nginx 0.9.7 04.04.2011
*) Добавление: теперь соединения в состоянии keepalive могут быть
diff --git a/src/core/nginx.h b/src/core/nginx.h
index d75d4e504..272608902 100644
--- a/src/core/nginx.h
+++ b/src/core/nginx.h
@@ -8,8 +8,8 @@
#define _NGINX_H_INCLUDED_
-#define nginx_version 9007
-#define NGINX_VERSION "0.9.7"
+#define nginx_version 1000000
+#define NGINX_VERSION "1.0.0"
#define NGINX_VER "nginx/" NGINX_VERSION
#define NGINX_VAR "NGINX"
diff --git a/src/core/ngx_conf_file.c b/src/core/ngx_conf_file.c
index 83c107329..689b7e7a2 100644
--- a/src/core/ngx_conf_file.c
+++ b/src/core/ngx_conf_file.c
@@ -507,7 +507,7 @@ ngx_conf_read_token(ngx_conf_t *cf)
}
if (len) {
- ngx_memcpy(b->start, start, len);
+ ngx_memmove(b->start, start, len);
}
size = (ssize_t) (file_size - cf->conf_file->file.offset);
diff --git a/src/core/ngx_string.h b/src/core/ngx_string.h
index 3f1e91e70..2030988d8 100644
--- a/src/core/ngx_string.h
+++ b/src/core/ngx_string.h
@@ -135,6 +135,10 @@ ngx_copy(u_char *dst, u_char *src, size_t len)
#endif
+#define ngx_memmove(dst, src, n) (void) memmove(dst, src, n)
+#define ngx_movemem(dst, src, n) (((u_char *) memmove(dst, src, n)) + (n))
+
+
/* msvc and icc7 compile memcmp() to the inline loop */
#define ngx_memcmp(s1, s2, n) memcmp((const char *) s1, (const char *) s2, n)
diff --git a/src/http/modules/ngx_http_auth_basic_module.c b/src/http/modules/ngx_http_auth_basic_module.c
index a6b95fa1d..c6b7f92f1 100644
--- a/src/http/modules/ngx_http_auth_basic_module.c
+++ b/src/http/modules/ngx_http_auth_basic_module.c
@@ -248,7 +248,7 @@ ngx_http_auth_basic_handler(ngx_http_request_t *r)
if (state == sw_passwd) {
left = left + n - passwd;
- ngx_memcpy(buf, &buf[passwd], left);
+ ngx_memmove(buf, &buf[passwd], left);
passwd = 0;
} else {
diff --git a/src/http/modules/ngx_http_geo_module.c b/src/http/modules/ngx_http_geo_module.c
index 6ad08b9b2..e60f1f4fb 100644
--- a/src/http/modules/ngx_http_geo_module.c
+++ b/src/http/modules/ngx_http_geo_module.c
@@ -685,7 +685,7 @@ ngx_http_geo_add_range(ngx_conf_t *cf, ngx_http_geo_conf_ctx_t *ctx,
range = a->elts;
- ngx_memcpy(&range[i + 2], &range[i + 1],
+ ngx_memmove(&range[i + 2], &range[i + 1],
(a->nelts - 2 - i) * sizeof(ngx_http_geo_range_t));
range[i + 1].start = (u_short) s;
@@ -724,7 +724,7 @@ ngx_http_geo_add_range(ngx_conf_t *cf, ngx_http_geo_conf_ctx_t *ctx,
range = a->elts;
- ngx_memcpy(&range[i + 3], &range[i + 1],
+ ngx_memmove(&range[i + 3], &range[i + 1],
(a->nelts - 3 - i) * sizeof(ngx_http_geo_range_t));
range[i + 2].start = (u_short) (e + 1);
@@ -752,7 +752,7 @@ ngx_http_geo_add_range(ngx_conf_t *cf, ngx_http_geo_conf_ctx_t *ctx,
range = a->elts;
- ngx_memcpy(&range[i + 1], &range[i],
+ ngx_memmove(&range[i + 1], &range[i],
(a->nelts - 1 - i) * sizeof(ngx_http_geo_range_t));
range[i + 1].start = (u_short) (e + 1);
@@ -776,7 +776,7 @@ ngx_http_geo_add_range(ngx_conf_t *cf, ngx_http_geo_conf_ctx_t *ctx,
range = a->elts;
- ngx_memcpy(&range[i + 2], &range[i + 1],
+ ngx_memmove(&range[i + 2], &range[i + 1],
(a->nelts - 2 - i) * sizeof(ngx_http_geo_range_t));
range[i + 1].start = (u_short) s;
@@ -861,7 +861,7 @@ ngx_http_geo_delete_range(ngx_conf_t *cf, ngx_http_geo_conf_ctx_t *ctx,
if (s == (ngx_uint_t) range[i].start
&& e == (ngx_uint_t) range[i].end)
{
- ngx_memcpy(&range[i], &range[i + 1],
+ ngx_memmove(&range[i], &range[i + 1],
(a->nelts - 1 - i) * sizeof(ngx_http_geo_range_t));
a->nelts--;
diff --git a/src/http/modules/ngx_http_image_filter_module.c b/src/http/modules/ngx_http_image_filter_module.c
index de1634a86..ecbfd158b 100644
--- a/src/http/modules/ngx_http_image_filter_module.c
+++ b/src/http/modules/ngx_http_image_filter_module.c
@@ -863,6 +863,10 @@ transparent:
}
gdImageCopyRotated(dst, src, dy/2, dx/2, 0, 0, dx, dy, ctx->angle);
gdImageDestroy(src);
+
+ t = dx;
+ dx = dy;
+ dy = t;
break;
case 180:
@@ -875,10 +879,6 @@ transparent:
gdImageDestroy(src);
break;
}
-
- t = dx;
- dx = dy;
- dy = t;
}
if (conf->filter == NGX_HTTP_IMAGE_CROP) {
diff --git a/src/http/modules/ngx_http_ssi_filter_module.c b/src/http/modules/ngx_http_ssi_filter_module.c
index 994efc40c..75a7156ef 100644
--- a/src/http/modules/ngx_http_ssi_filter_module.c
+++ b/src/http/modules/ngx_http_ssi_filter_module.c
@@ -1902,7 +1902,7 @@ ngx_http_ssi_include(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ctx,
len = (uri->data + uri->len) - src;
if (len) {
- dst = ngx_copy(dst, src, len);
+ dst = ngx_movemem(dst, src, len);
}
uri->len = dst - uri->data;
diff --git a/src/http/modules/perl/nginx.pm b/src/http/modules/perl/nginx.pm
index 5e57fc746..4b79ce8f6 100644
--- a/src/http/modules/perl/nginx.pm
+++ b/src/http/modules/perl/nginx.pm
@@ -48,7 +48,7 @@ our @EXPORT = qw(
HTTP_INSUFFICIENT_STORAGE
);
-our $VERSION = '0.9.7';
+our $VERSION = '1.0.0';
require XSLoader;
XSLoader::load('nginx', $VERSION);
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index 693a3cb32..06eb0b36c 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -1108,17 +1108,21 @@ ngx_int_t
ngx_http_core_post_access_phase(ngx_http_request_t *r,
ngx_http_phase_handler_t *ph)
{
+ ngx_int_t access_code;
+
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"post access phase: %ui", r->phase_handler);
- if (r->access_code) {
+ access_code = r->access_code;
- if (r->access_code == NGX_HTTP_FORBIDDEN) {
+ if (access_code) {
+ if (access_code == NGX_HTTP_FORBIDDEN) {
ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
"access forbidden by rule");
}
- ngx_http_finalize_request(r, r->access_code);
+ r->access_code = 0;
+ ngx_http_finalize_request(r, access_code);
return NGX_OK;
}
@@ -1221,7 +1225,7 @@ ngx_http_core_try_files_phase(ngx_http_request_t *r,
*e.pos = '\0';
if (alias && ngx_strncmp(name, clcf->name.data, alias) == 0) {
- ngx_memcpy(name, name + alias, len - alias);
+ ngx_memmove(name, name + alias, len - alias);
path.len -= alias;
}
}
diff --git a/src/http/ngx_http_file_cache.c b/src/http/ngx_http_file_cache.c
index 0d97e94ec..f26fcbc98 100644
--- a/src/http/ngx_http_file_cache.c
+++ b/src/http/ngx_http_file_cache.c
@@ -1027,6 +1027,7 @@ ngx_http_file_cache_forced_expire(ngx_http_file_cache_t *cache)
if (fcn->count == 0) {
ngx_http_file_cache_delete(cache, q, name);
+ wait = 0;
} else {
if (--tries) {
@@ -1191,7 +1192,7 @@ ngx_http_file_cache_manager(void *data)
ngx_http_file_cache_t *cache = data;
off_t size;
- time_t next;
+ time_t next, wait;
next = ngx_http_file_cache_expire(cache);
@@ -1212,7 +1213,11 @@ ngx_http_file_cache_manager(void *data)
return next;
}
- next = ngx_http_file_cache_forced_expire(cache);
+ wait = ngx_http_file_cache_forced_expire(cache);
+
+ if (wait > 0) {
+ return wait;
+ }
if (ngx_http_file_cache_manager_sleep(cache) != NGX_OK) {
return next;
diff --git a/src/http/ngx_http_script.c b/src/http/ngx_http_script.c
index ef69155db..8b861ce34 100644
--- a/src/http/ngx_http_script.c
+++ b/src/http/ngx_http_script.c
@@ -1089,7 +1089,7 @@ ngx_http_script_regex_end_code(ngx_http_script_engine_t *e)
NGX_UNESCAPE_REDIRECT);
if (src < e->pos) {
- dst = ngx_copy(dst, src, e->pos - src);
+ dst = ngx_movemem(dst, src, e->pos - src);
}
e->pos = dst;