SizeDelimiter sizeDelimiter = new SizeDelimiter(icapMessageDecoder.maxHttpHeaderSize);
boolean preview = icapMessageDecoder.message.isPreviewMessage();
String line = IcapDecoderUtil.readSingleHeaderLine(buffer,sizeDelimiter);
String lastHeader = null;
if (line.length() != 0) {
HttpChunkTrailer trailer = new DefaultIcapChunkTrailer(preview,false);
do {
char firstChar = line.charAt(0);
if (lastHeader != null && (firstChar == ' ' || firstChar == '\t')) {
List<String> current = trailer.getHeaders(lastHeader);
if (current.size() != 0) {
int lastPos = current.size() - 1;
String newString = current.get(lastPos) + line.trim();
current.set(lastPos, newString);
} else {
// Content-Length, Transfer-Encoding, or Trailer
}
} else {
String[] header = IcapDecoderUtil.splitHeader(line);
String name = header[0];
if (!name.equalsIgnoreCase(HttpHeaders.Names.CONTENT_LENGTH) &&
!name.equalsIgnoreCase(HttpHeaders.Names.TRANSFER_ENCODING) &&
!name.equalsIgnoreCase(HttpHeaders.Names.TRAILER)) {
trailer.addHeader(name, header[1]);
}
lastHeader = name;
}
line = IcapDecoderUtil.readSingleHeaderLine(buffer,sizeDelimiter);