From b60c43fb81569c5976975444c13bc4e546a56a7d Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Thu, 18 Jul 2013 21:00:01 -0700 Subject: [PATCH] ARCRecord: Add error offset to position when adjusting for bad header lines --- commons/src/main/java/org/archive/io/arc/ARCRecord.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/commons/src/main/java/org/archive/io/arc/ARCRecord.java b/commons/src/main/java/org/archive/io/arc/ARCRecord.java index 2edd8aea..21bea07c 100644 --- a/commons/src/main/java/org/archive/io/arc/ARCRecord.java +++ b/commons/src/main/java/org/archive/io/arc/ARCRecord.java @@ -573,6 +573,7 @@ public class ARCRecord extends ArchiveRecord implements ARCConstants { String statusLine; byte[] statusBytes; int eolCharCount = 0; + int errOffset = 0; // Read status line, skipping any errant http headers found before it // This allows a larger number of 'corrupt' arcs -- where headers were accidentally @@ -599,6 +600,13 @@ public class ARCRecord extends ArchiveRecord implements ARCConstants { if (!statusLine.contains(":") && StatusLine.startsWithHTTP(statusLine)) { break; } + + // Add bytes read to error "offset" to add to position + errOffset += statusBytes.length; + } + + if (errOffset > 0) { + this.incrementPosition(errOffset); } if ((statusLine == null) ||