The boundary regexp should use the 'n' multibyte switch to disable multibyte processing on the multipart content bodies.
…o rewind the input stream.
The ConditionalGet, ContentLength, Deflator, and ShowStatus middleware components were reading/checking headers case sensitively.
This is a backwards incompatible change that removes header name normalization while attempting to keep most of its benefits. The header name case is preserved but the Hash has case insensitive lookup, replace, delete, and include semantics.