|
Mantis - Hessian
|
|||||
| Viewing Issue Advanced Details | |||||
|
|
|||||
| ID: | Category: | Severity: | Reproducibility: | Date Submitted: | Last Update: |
| 3804 | minor | always | 12-08-09 09:18 | 12-17-09 18:21 | |
|
|
|||||
| Reporter: | emil | Platform: | |||
| Assigned To: | OS: | ||||
| Priority: | normal | OS Version: | |||
| Status: | closed | Product Version: | 4.0.2 | ||
| Product Build: | Resolution: | fixed | |||
| Projection: | none | ||||
| ETA: | none | Fixed in Version: | 4.0.3 | ||
|
|
|||||
| Summary: | 0003804: hessian flash long strings | ||||
| Description: |
(rep by Piet van Remortel) We are trying to fix an unexplainable error in communicating between java (hessian 4.0.2) and flex (hessian 4.0.0). For some input files we get a "expected string at XX" where XX is a position number. Digging into the code, we find that this seems like a wrong or unexpected code coming in when reading characters. Is this a version mismatch ? If so, is there a plan to push the flex version to 4.0.2 also ? ... We stepped through the code and noticed the following: We typically transmit long files consisting of strings (XML). Whenever such a file is chopped up in blocks of 0x8000 size, the following can happen, making things go wrong: When a string's length is a multiple of 0x8000, plus a tail that is less then 0x0400, the tail gets misread in the parseChar() method, since there is no case clause capturing BC_STRING_SHORT. The following adaptation of parseChar() in Hessian2Input fixes this: (Actionscript version given - analogous for Java) //========= ... _isLastChunk = true; _chunkLength = code - 0x00; break; // fix start ============== case Hessian2Constants.BC_STRING_SHORT: case Hessian2Constants.BC_STRING_SHORT + 1: case Hessian2Constants.BC_STRING_SHORT + 2: _isLastChunk = true; _chunkLength = ((code - Hessian2Constants.BC_STRING_SHORT) << 8) + read(); break; // fix end ================ default: throw expect("string", code); } } _chunkLength--; return parseUTF8Char(); } //========= |
||||
| Steps To Reproduce: | |||||
| Additional Information: | |||||
| Relationships | |||||
| Attached Files: | |||||
| Notes | |||||
|
|
|||||
|
|
||||