X-Accel-Redirect Decode Patch
rovervr
nginx-forum at nginx.us
Thu Sep 9 16:03:07 MSD 2010
Hi,
I created a small patch for that issue which works for me. But it needs
to be reviewed by Igor or someone who knows C better than me.
It checks the static request from X-Accel-Redirect for '%' and escapes
them if found.
[code]
--- nginx-0.8.50orig/src/http/modules/ngx_http_static_module.c
2010-05-24 14:35:10.000000000 +0200
+++ nginx-0.8.50/src/http/modules/ngx_http_static_module.c
2010-09-09 13:49:49.000000000 +0200
@@ -47,7 +47,7 @@
static ngx_int_t
ngx_http_static_handler(ngx_http_request_t *r)
{
- u_char *last, *location;
+ u_char *last, *location, *src, *dst;
size_t root, len;
ngx_str_t path;
ngx_int_t rc;
@@ -83,6 +83,28 @@
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, log, 0,
"http filename: \"%s\"", path.data);
+ /*
+ * X-Accel-Redirect Patch
+ * If the path contains a % it probably must be decoded
+ */
+ if( strstr( path.data, "%" ) != NULL )
+ {
+ ngx_str_t *uri = &path;
+
+ dst = uri->data;
+ src = uri->data;
+
+ ngx_unescape_uri( &dst, &src, uri->len, NGX_UNESCAPE_URI );
+
+ len = uri->len - ( src - dst ) + 1;
+ if ( len )
+ {
+ dst = ngx_copy( dst, src, len);
+ }
+ uri->len = dst - uri->data;
+ }
+
+
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
ngx_memzero(&of, sizeof(ngx_open_file_info_t));
[/code]
It would be nice to get a little feedback if this is ok.
best regards,
Volker Richter
Posted at Nginx Forum: http://forum.nginx.org/read.php?2,128346,128745#msg-128745
More information about the nginx
mailing list