[
https://issues.apache.org/jira/browse/DIRMINA-666?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12677982#action_12677982
]
Emmanuel Lecharny commented on DIRMINA-666:
-------------------------------------------
The patch won't work :
- it should be (CONTENT_LENGTH[j]-32))
- passing contentmlength will be accepted, as 'm' = '-' +32
Moreover, I think that fixing the code is not necessary. First because it's
just an example, second because it's very rare that software are passing case
insensitive headers (the RFC uses case sensitive headers for thise specific
headers).
However, I would like to transfer this issue to the ASYNCWEB project, as it's
the asynchronous implementation of the HTTP FRC.
wdyt ?
> HTTP header parsing example incompatible with rfc2616 / content-length field
> name should be interrepted as case-insensitive
> ---------------------------------------------------------------------------------------------------------------------------
>
> Key: DIRMINA-666
> URL: https://issues.apache.org/jira/browse/DIRMINA-666
> Project: MINA
> Issue Type: Bug
> Components: Example
> Affects Versions: 1.1.0
> Environment: Linux
> Reporter: Janne Siren
> Assignee: Emmanuel Lecharny
> Priority: Critical
> Original Estimate: 2h
> Remaining Estimate: 2h
>
> Qt4 (4.4.3) QHttp class sends HTTP/POST command with HTTP header which has
> "content-length" field name in small letters. HTTP header parsing
> functionality in MINA Example does not accept these POST commands as it
> expects case-sensitive field name "Content-Length". MINA Example HTTP header
> parser functionality incorrectly drops these POST messages send by Qt4 QHttp
> class although those messages are fully compatible with rfc2616. Cut from
> rfc2616 (4.2 Message Headers): Field names are case-insensitive.
> The problem (at least in MINA-1.1.0) is in
> org.apache.mina.example.httpserver.codec.HttpRequestDecoder.java:
> private static final byte[] CONTENT_LENGTH = new String( "Content-Length:" )
> .getBytes();
> ...
> boolean found = false;
> for( int j = 0; j < CONTENT_LENGTH.length; j++ )
> {
> if( in.get( i + j ) != CONTENT_LENGTH[
> j ] )
> {
> found = false;
> break;
> }
> found = true;
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.