aboutsummaryrefslogtreecommitdiff
path: root/src/core/ngx_string.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/ngx_string.c')
-rw-r--r--src/core/ngx_string.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/core/ngx_string.c b/src/core/ngx_string.c
index f042d7c33..2bb335a07 100644
--- a/src/core/ngx_string.c
+++ b/src/core/ngx_string.c
@@ -980,20 +980,21 @@ ngx_unescape_uri(u_char **dst, u_char **src, size_t size)
break;
}
- /* skip the invalid quoted character */
+ /* the invalid quoted character */
- s++;
- size--;
+ state = sw_usual;
+
+ *d++ = ch;
break;
case sw_quoted_second:
+ state = sw_usual;
+
if (ch >= '0' && ch <= '9') {
ch = (u_char) ((decoded << 4) + ch - '0');
- state = sw_usual;
-
if (ch > '%' && ch < 0x7f) {
*d++ = ch;
break;
@@ -1013,8 +1014,6 @@ ngx_unescape_uri(u_char **dst, u_char **src, size_t size)
goto done;
}
- state = sw_usual;
-
if (ch > '%' && ch < 0x7f) {
*d++ = ch;
break;
@@ -1025,7 +1024,7 @@ ngx_unescape_uri(u_char **dst, u_char **src, size_t size)
break;
}
- /* skip the invalid quoted character */
+ /* the invalid quoted character */
break;
}