fix segfault if $server_addr failed
diff --git a/src/http/modules/ngx_http_charset_filter_module.c b/src/http/modules/ngx_http_charset_filter_module.c
index b9c9ade..cae9bbe 100644
--- a/src/http/modules/ngx_http_charset_filter_module.c
+++ b/src/http/modules/ngx_http_charset_filter_module.c
@@ -250,6 +250,10 @@
vv = ngx_http_get_indexed_variable(r,
charset - NGX_HTTP_CHARSET_VAR);
+ if (vv == NULL || vv->not_found) {
+ return NGX_ERROR;
+ }
+
charset = ngx_http_charset_get_charset(charsets, n,
(ngx_str_t *) vv);
}
@@ -293,6 +297,10 @@
vv = ngx_http_get_indexed_variable(r,
source_charset - NGX_HTTP_CHARSET_VAR);
+ if (vv == NULL || vv->not_found) {
+ return NGX_ERROR;
+ }
+
source_charset = ngx_http_charset_get_charset(charsets, n,
(ngx_str_t *) vv);
}
diff --git a/src/http/modules/ngx_http_map_module.c b/src/http/modules/ngx_http_map_module.c
index 0a533c0..fb8e8ee 100644
--- a/src/http/modules/ngx_http_map_module.c
+++ b/src/http/modules/ngx_http_map_module.c
@@ -115,6 +115,11 @@
vv = ngx_http_get_flushed_variable(r, map->index);
+ if (vv == NULL || vv->not_found) {
+ *v = *map->default_value;
+ return NGX_OK;
+ }
+
len = vv->len;
if (len && map->hostnames && vv->data[len - 1] == '.') {
diff --git a/src/http/ngx_http_variables.c b/src/http/ngx_http_variables.c
index 1201458..48b46f0 100644
--- a/src/http/ngx_http_variables.c
+++ b/src/http/ngx_http_variables.c
@@ -367,7 +367,7 @@
r->variables[index].valid = 0;
r->variables[index].not_found = 1;
- return NULL;
+ return &r->variables[index];
}