public static bool FindEntityBodyOffsetFromArray(byte[] arrData, out int iHeadersLen, out int iEntityBodyOffset, out HTTPHeaderParseWarnings outWarnings) { if ((arrData != null) && (arrData.Length >= 2)) { int iBodySeekProgress = 0; long length = arrData.Length; if (FindEndOfHeaders(arrData, ref iBodySeekProgress, length, out outWarnings)) { iEntityBodyOffset = iBodySeekProgress + 1; switch (outWarnings) { case HTTPHeaderParseWarnings.None: iHeadersLen = iBodySeekProgress - 3; return true; case HTTPHeaderParseWarnings.EndedWithLFLF: iHeadersLen = iBodySeekProgress - 1; return true; case HTTPHeaderParseWarnings.EndedWithLFCRLF: iHeadersLen = iBodySeekProgress - 2; return true; } } } iHeadersLen = iEntityBodyOffset = -1; outWarnings = HTTPHeaderParseWarnings.Malformed; return false; }
internal static bool FindEndOfHeaders(byte[] arrData, ref int iBodySeekProgress, long lngDataLen, out HTTPHeaderParseWarnings oWarnings) { bool flag; oWarnings = HTTPHeaderParseWarnings.None; Label_0003: flag = false; while (((long) iBodySeekProgress) < (lngDataLen - 1L)) { iBodySeekProgress++; if (10 == arrData[iBodySeekProgress - 1]) { flag = true; break; } } if (flag) { if ((13 != arrData[iBodySeekProgress]) && (10 != arrData[iBodySeekProgress])) { iBodySeekProgress++; goto Label_0003; } if (10 == arrData[iBodySeekProgress]) { oWarnings = HTTPHeaderParseWarnings.EndedWithLFLF; return true; } iBodySeekProgress++; if ((((long) iBodySeekProgress) < lngDataLen) && (10 == arrData[iBodySeekProgress])) { if (13 != arrData[iBodySeekProgress - 3]) { oWarnings = HTTPHeaderParseWarnings.EndedWithLFCRLF; } return true; } if (iBodySeekProgress > 3) { iBodySeekProgress -= 4; } else { iBodySeekProgress = 0; } } return false; }
internal static bool FindEndOfHeaders(byte[] arrData, ref int iBodySeekProgress, long lngDataLen, out HTTPHeaderParseWarnings oWarnings) { bool flag; oWarnings = HTTPHeaderParseWarnings.None; Label_0003: flag = false; while (((long)iBodySeekProgress) < (lngDataLen - 1L)) { iBodySeekProgress++; if (10 == arrData[iBodySeekProgress - 1]) { flag = true; break; } } if (flag) { if ((13 != arrData[iBodySeekProgress]) && (10 != arrData[iBodySeekProgress])) { iBodySeekProgress++; goto Label_0003; } if (10 == arrData[iBodySeekProgress]) { oWarnings = HTTPHeaderParseWarnings.EndedWithLFLF; return(true); } iBodySeekProgress++; if ((((long)iBodySeekProgress) < lngDataLen) && (10 == arrData[iBodySeekProgress])) { if (13 != arrData[iBodySeekProgress - 3]) { oWarnings = HTTPHeaderParseWarnings.EndedWithLFCRLF; } return(true); } if (iBodySeekProgress > 3) { iBodySeekProgress -= 4; } else { iBodySeekProgress = 0; } } return(false); }
public static bool FindEntityBodyOffsetFromArray(byte[] arrData, out int iHeadersLen, out int iEntityBodyOffset, out HTTPHeaderParseWarnings outWarnings) { if ((arrData != null) && (arrData.Length >= 2)) { int iBodySeekProgress = 0; long length = arrData.Length; if (FindEndOfHeaders(arrData, ref iBodySeekProgress, length, out outWarnings)) { iEntityBodyOffset = iBodySeekProgress + 1; switch (outWarnings) { case HTTPHeaderParseWarnings.None: iHeadersLen = iBodySeekProgress - 3; return(true); case HTTPHeaderParseWarnings.EndedWithLFLF: iHeadersLen = iBodySeekProgress - 1; return(true); case HTTPHeaderParseWarnings.EndedWithLFCRLF: iHeadersLen = iBodySeekProgress - 2; return(true); } } } iHeadersLen = iEntityBodyOffset = -1; outWarnings = HTTPHeaderParseWarnings.Malformed; return(false); }
public static bool FindEntityBodyOffsetFromArray(byte[] arrData, out int iHeadersLen, out int iEntityBodyOffset, out HTTPHeaderParseWarnings outWarnings) { if (arrData != null && arrData.Length >= 2) { int num = 0; long lngDataLen = (long)arrData.Length; if (Parser.FindEndOfHeaders(arrData, ref num, lngDataLen, out outWarnings)) { iEntityBodyOffset = num + 1; switch (outWarnings) { case HTTPHeaderParseWarnings.None: iHeadersLen = num - 3; return(true); case HTTPHeaderParseWarnings.EndedWithLFLF: iHeadersLen = num - 1; return(true); case HTTPHeaderParseWarnings.EndedWithLFCRLF: iHeadersLen = num - 2; return(true); } } } iEntityBodyOffset = -1; iHeadersLen = -1; outWarnings = HTTPHeaderParseWarnings.Malformed; return(false); }