[
https://issues.apache.org/jira/browse/SHINDIG-695?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Zsolt Bányai updated SHINDIG-695:
---------------------------------
Attachment: shindig-patch-695-1.0.x-incubating.patch
> HttpResponse's externalizable implementation not works on Linux/Unix systems
> ----------------------------------------------------------------------------
>
> Key: SHINDIG-695
> URL: https://issues.apache.org/jira/browse/SHINDIG-695
> Project: Shindig
> Issue Type: Bug
> Components: Gadget Rendering Server (Java)
> Reporter: Zsolt Bányai
> Priority: Blocker
> Attachments: shindig-patch-695-1.0.x-incubating.patch,
> shindig-patch-695-trunk.patch
>
>
> In readExternal(ObjectInput in) it cannot read the whole content at the first
> time so the responseString could be truncated.
> One of the right ways:
> /**
> * Expected layout:
> *
> * int - status code
> * Map<String, List<String>> - headers
> * int - length of body
> * byte array - body, of previously specified length
> */
> @SuppressWarnings("unchecked")
> public void readExternal(ObjectInput in) throws IOException,
> ClassNotFoundException {
> httpStatusCode = in.readInt();
> Map<String, List<String>> headerCopy = (Map<String,
> List<String>>)in.readObject();
> int bodyLength = in.readInt();
> responseBytes = new byte[bodyLength];
> int cnt, offset = 0;
> while ((cnt = in.read(responseBytes, offset, bodyLength)) >= 0) {
> //cnt cannot be 0, because: "This method will block until some input is
> available.", but can be lower than bodyLength
> offset += cnt;
> bodyLength -= cnt;
> }
> if (offset != responseBytes.length) {
> throw new IOException("Invalid body! Expected length = " +
> responseBytes.length + ", bytes readed = " + offset + ".");
> }
> date = getAndUpdateDate(headerCopy);
> encoding = getAndUpdateEncoding(headerCopy, responseBytes);
> headers = Collections.unmodifiableMap(headerCopy);
> metadata = Collections.emptyMap();
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.