[QFJ-292] On checksum errors, include information on the problem section of the stream Created: 22/Jan/08  Updated: 07/Aug/08  Resolved: 17/Jun/08

Status: Closed
Project: QuickFIX/J
Component/s: Engine
Affects Version/s: 1.2.1, 1.3.0, 1.3.1
Fix Version/s: 1.3.2

Type: Improvement Priority: Default
Reporter: Rhys Yarranton Assignee: Unassigned
Resolution: Fixed Votes: 0
Labels: None


 Description   

If there is a checksum error an error is logged, but it does not include the problem section of stream. This would useful in determining if it was a garble, a problem with the counterparty's software or whatever.

A patch we've tried is to add the following snippet to FIXMessageDecoder.handleError(ByteBuffer, int, String, boolean), right before the "if(disconnect))":

int mark = buffer.position();
try {
StringBuilder sb = new StringBuilder(text);
sb.append("\nBuffer debug info: ").append(getBufferDebugInfo(buffer));
buffer.position(0);
sb.append("\nBuffer contents: ");
try

{ final byte[] array = new byte[buffer.limit()]; for(int i = 0; i < array.length; ++i) array[i] = buffer.get(); sb.append(new String(array, "ISO-8859-1")); }

catch (Exception e)

{ sb.append(buffer.getHexDump()); }

text = sb.toString();
} finally

{ buffer.position(mark); }
Generated at Sat Nov 23 09:08:04 UTC 2024 using JIRA 7.5.2#75007-sha1:9f5725bb824792b3230a5d8716f0c13e296a3cae.