synapse-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Myles Bunbury (JIRA)" <>
Subject [jira] Created: (SYNAPSE-662) ClientWorker overriding character encoding
Date Wed, 09 Jun 2010 19:01:20 GMT
ClientWorker overriding character encoding

                 Key: SYNAPSE-662
             Project: Synapse
          Issue Type: Bug
    Affects Versions: 1.2
            Reporter: Myles Bunbury

The following code exists in the org.apache.synapse.transport.nhttp.ClientWorker class' run()

                    contentType.indexOf(HTTP.CHARSET_PARAM) > 0 ?
                        charSetEnc : MessageContext.DEFAULT_CHAR_SET_ENCODING);

This fails however for the following Content-Type HTTP header:
  application/soap+xml; action="urn:echoResponse";charset=UTF-16

BuilderUtil.getCharSetEncoding(contentType) is called a few lines up and correctly extracts
the UTF-16 character set value, but then overrides this and sets it to UTF-8. It does this
because the value of org.apache.http.protocol.HTTP.CHARSET_PARAM is "; charset=". That is,
it's failing because the response does not have a space between the charset parameter and
the previous parameter.

Reading through the HTTP specs, I haven't come across anything that says either that whitespace
is permissible or not permissible here. In my view the code should therfore be flexible enough
to handle either case. 

I would suggest simpifying the code to:

     responseMsgCtx.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, charSetEnc);

as the BuilderUtil.getCharSetEncoding() code above the offending code seems to be sufficient
at first glance.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message