summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES17
-rw-r--r--CHANGES.ru15
-rw-r--r--src/core/nginx.h2
-rw-r--r--src/core/ngx_hash.c2
-rw-r--r--src/event/ngx_event_openssl.c59
-rw-r--r--src/http/modules/perl/nginx.pm2
-rw-r--r--src/http/ngx_http_core_module.c5
7 files changed, 64 insertions, 38 deletions
diff --git a/CHANGES b/CHANGES
index a4991d8d1..d8972e211 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,19 @@
+Changes with nginx 0.7.35 16 Feb 2009
+
+ *) Bugfix: a "ssl_engine" directive did not use a SSL-accelerator for
+ asymmetric ciphers.
+ Thanks to Marcin Gozdalik.
+
+ *) Bugfix: a "try_files" directive set MIME type depending on an
+ original request extension.
+
+ *) Bugfix: "*domain.tld" names were handled incorrectly in
+ "server_name", "valid_referers", and "map" directives, if an
+ ".domain.tld" and ".subdomain.domain.tld" wildcards were used;
+ the bug had appeared in 0.7.9.
+
+
Changes with nginx 0.7.34 10 Feb 2009
*) Feature: the "off" parameter of the "if_modified_since" directive.
@@ -382,7 +397,7 @@ Changes with nginx 0.7.9 12 Aug 2008
*) Bugfix: if the "server_name", "valid_referers", and "map" directives
used an "*.domain.tld" wildcard and exact name "domain.tld" was not
- set, then the exact name was matched by the wildcard; the bugs had
+ set, then the exact name was matched by the wildcard; the bug had
appeared in 0.3.18.
diff --git a/CHANGES.ru b/CHANGES.ru
index d1eca6ee7..ad56b05d6 100644
--- a/CHANGES.ru
+++ b/CHANGES.ru
@@ -1,4 +1,19 @@
+Изменения в nginx 0.7.35 16.02.2009
+
+ *) Исправление: директива ssl_engine не использовала SSL-акселератор
+ для асимметричных шифров.
+ Спасибо Marcin Gozdalik.
+
+ *) Исправление: директива try_files выставляла MIME-type, исходя из
+ расширения первоначального запроса.
+
+ *) Исправление: в директивах server_name, valid_referers и map
+ неправильно обрабатывались имена вида "*domain.tld", если
+ использовались маски вида ".domain.tld" и ".subdomain.domain.tld";
+ ошибка появилась в 0.7.9.
+
+
Изменения в nginx 0.7.34 10.02.2009
*) Добавление: параметр off в директиве if_modified_since.
diff --git a/src/core/nginx.h b/src/core/nginx.h
index 2eedecb72..5a597924d 100644
--- a/src/core/nginx.h
+++ b/src/core/nginx.h
@@ -8,7 +8,7 @@
#define _NGINX_H_INCLUDED_
-#define NGINX_VERSION "0.7.34"
+#define NGINX_VERSION "0.7.35"
#define NGINX_VER "nginx/" NGINX_VERSION
#define NGINX_VAR "NGINX"
diff --git a/src/core/ngx_hash.c b/src/core/ngx_hash.c
index dd28e7c37..2eadbf3e3 100644
--- a/src/core/ngx_hash.c
+++ b/src/core/ngx_hash.c
@@ -589,7 +589,7 @@ ngx_hash_wildcard_init(ngx_hash_init_t *hinit, ngx_hash_key_t *names,
wdc->value = names[n].value;
}
- name->value = (void *) ((uintptr_t) wdc | (dot ? 3 : 1));
+ name->value = (void *) ((uintptr_t) wdc | (dot ? 3 : 2));
} else if (dot) {
name->value = (void *) ((uintptr_t) name->value | 1);
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
index c963c9597..0824e7a67 100644
--- a/src/event/ngx_event_openssl.c
+++ b/src/event/ngx_event_openssl.c
@@ -10,7 +10,7 @@
typedef struct {
- ngx_str_t engine;
+ ngx_uint_t engine; /* unsigned engine:1; */
} ngx_openssl_conf_t;
@@ -37,26 +37,17 @@ static void ngx_ssl_session_rbtree_insert_value(ngx_rbtree_node_t *temp,
ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel);
static void *ngx_openssl_create_conf(ngx_cycle_t *cycle);
-static char *ngx_openssl_init_conf(ngx_cycle_t *cycle, void *conf);
+static char *ngx_openssl_engine(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
static void ngx_openssl_exit(ngx_cycle_t *cycle);
-#if !(NGX_SSL_ENGINE)
-static char *ngx_openssl_noengine(ngx_conf_t *cf, ngx_command_t *cmd,
- void *conf);
-#endif
-
static ngx_command_t ngx_openssl_commands[] = {
{ ngx_string("ssl_engine"),
NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_TAKE1,
-#if (NGX_SSL_ENGINE)
- ngx_conf_set_str_slot,
-#else
- ngx_openssl_noengine,
-#endif
+ ngx_openssl_engine,
+ 0,
0,
- offsetof(ngx_openssl_conf_t, engine),
NULL },
ngx_null_command
@@ -66,7 +57,7 @@ static ngx_command_t ngx_openssl_commands[] = {
static ngx_core_module_t ngx_openssl_module_ctx = {
ngx_string("openssl"),
ngx_openssl_create_conf,
- ngx_openssl_init_conf
+ NULL
};
@@ -2113,8 +2104,7 @@ ngx_openssl_create_conf(ngx_cycle_t *cycle)
/*
* set by ngx_pcalloc():
*
- * oscf->engine.len = 0;
- * oscf->engine.data = NULL;
+ * oscf->engine = 0;
*/
return oscf;
@@ -2122,53 +2112,54 @@ ngx_openssl_create_conf(ngx_cycle_t *cycle)
static char *
-ngx_openssl_init_conf(ngx_cycle_t *cycle, void *conf)
+ngx_openssl_engine(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{
#if (NGX_SSL_ENGINE)
ngx_openssl_conf_t *oscf = conf;
- ENGINE *engine;
+ ENGINE *engine;
+ ngx_str_t *value;
- if (oscf->engine.len == 0) {
- return NGX_CONF_OK;
+ if (oscf->engine) {
+ return "is duplicate";
}
- engine = ENGINE_by_id((const char *) oscf->engine.data);
+ oscf->engine = 1;
+
+ value = cf->args->elts;
+
+ engine = ENGINE_by_id((const char *) value[1].data);
if (engine == NULL) {
- ngx_ssl_error(NGX_LOG_WARN, cycle->log, 0,
- "ENGINE_by_id(\"%V\") failed", &oscf->engine);
+ ngx_ssl_error(NGX_LOG_WARN, cf->log, 0,
+ "ENGINE_by_id(\"%V\") failed", &value[1]);
return NGX_CONF_ERROR;
}
if (ENGINE_set_default(engine, ENGINE_METHOD_ALL) == 0) {
- ngx_ssl_error(NGX_LOG_WARN, cycle->log, 0,
+ ngx_ssl_error(NGX_LOG_WARN, cf->log, 0,
"ENGINE_set_default(\"%V\", ENGINE_METHOD_ALL) failed",
- &oscf->engine);
+ &value[1]);
+
+ ENGINE_free(engine);
+
return NGX_CONF_ERROR;
}
ENGINE_free(engine);
-#endif
-
return NGX_CONF_OK;
-}
+#else
-#if !(NGX_SSL_ENGINE)
-
-static char *
-ngx_openssl_noengine(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
-{
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
"\"ssl_engine\" directive is available only in "
"OpenSSL 0.9.7 and higher,");
return NGX_CONF_ERROR;
-}
#endif
+}
static void
diff --git a/src/http/modules/perl/nginx.pm b/src/http/modules/perl/nginx.pm
index d5156af06..90989da54 100644
--- a/src/http/modules/perl/nginx.pm
+++ b/src/http/modules/perl/nginx.pm
@@ -47,7 +47,7 @@ our @EXPORT = qw(
HTTP_INSUFFICIENT_STORAGE
);
-our $VERSION = '0.7.34';
+our $VERSION = '0.7.35';
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 a21da0f3b..3f5cb29dc 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -1197,6 +1197,11 @@ ngx_http_core_try_files_phase(ngx_http_request_t *r,
ngx_memcpy(p, name, path.len);
}
+ if (ngx_http_set_exten(r) != NGX_OK) {
+ ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
+ return NGX_OK;
+ }
+
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"try file uri: \"%V\"", &r->uri);