ClientWorker overriding character encoding
------------------------------------------
Key: SYNAPSE-662
URL: https://issues.apache.org/jira/browse/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() method:
responseMsgCtx.setProperty(
Constants.Configuration.CHARACTER_SET_ENCODING,
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: [email protected]
For additional commands, e-mail: [email protected]