nginx-0.3.16-RELEASE import

    *) Feature: the ngx_http_map_module.

    *) Feature: the "types_hash_max_size" and "types_hash_bucket_size"
       directives.

    *) Feature: the "ssi_value_length" directive.

    *) Feature: the "worker_rlimit_core" directive.

    *) Workaround: the connection number in logs was always 1 if nginx was
       built by the icc 8.1 or 9.0 compilers with optimization for
       Pentium 4.

    *) Bugfix: the "config timefmt" SSI command set incorrect time format.

    *) Bugfix: nginx did not close connection to IMAP/POP3 backend for the
       SSL connections; the bug had appeared in 0.3.13.
       Thanks to Rob Mueller.

    *) Bugfix: segmentation fault may occurred in at SSL shutdown; the bug
       had appeared in 0.3.13.
diff --git a/src/core/ngx_string.c b/src/core/ngx_string.c
index f042d7c..2bb335a 100644
--- a/src/core/ngx_string.c
+++ b/src/core/ngx_string.c
@@ -980,20 +980,21 @@
                 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 @@
                     goto done;
                 }
 
-                state = sw_usual;
-
                 if (ch > '%' && ch < 0x7f) {
                     *d++ = ch;
                     break;
@@ -1025,7 +1024,7 @@
                 break;
             }
 
-            /* skip the invalid quoted character */
+            /* the invalid quoted character */
 
             break;
         }