[
https://issues.apache.org/jira/browse/DIRMINA-666?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12678051#action_12678051
]
Janne Siren commented on DIRMINA-666:
-------------------------------------
Yes. Typo should have been 0x20 (32)... but as you said it would accept 'm' as
replacement of '-', so our quick-and-dirty fix is not good. (Anyhow I am not so
worried about accepting illegal header than not accepting legal headers.)
I am bit confused though from Your comment that RFC uses case sensitive headers
for these specific headers. I do not find anywhere statement about that.
RFC2616, section 4.2 says: "HTTP header fields, which include general-header
(section 4.5), request-header (section 5.3), response-header (section 6.2), and
entity-header (section 7.1) fields, follow the same generic format as that
given in section 3.1 of RFC 822 [9]. Each header field consists of a name
followed by a colon (":") and the field value. Field names are
case-insensitive." I cannot find anything from section 7.1 that states that
these entity-headers are case-sensitive. And in 14.13 I cannot find anything
that says that Content-Length field name is case sensitive. But I am very
pleased if you can state to which clause in RFC do you refer in your oppinion.
If you are correct, I would have to make correction request to Qt-Software
department of Nokia (old Trolltech). I most likely will do it anyway, but is it
"for better compatibility with broken servers" or "Content-Lenght in POST of
QHttp is incompatible with HTTP/1.1 specification" has quite significant
meaning to Qt people.
For your comment "just an example": Well I think that many codes of apache.org
has originally been "just an example", but further developped to production
quality code. So all feedback should be taken into account. I would not close
it or transfer it to other project (it might be copied there if relevant), but
tag it as "future developement" or mark it to code "// TODO: These fields
should be handled case-insensitive", so that those who relies on quality of
examples can easily find what problems are already found from example code.
> 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.