while (bytesTransferred > 0) { int left; int offsetAcc = offset; TCommandInfo commandInfo; commandInfo = FindCommand(e.Buffer, offset, bytesTransferred, true, out left); offsetAcc = offset + (bytesTransferred - left); while(left > 0) { commandInfo = FindCommand(e.Buffer, offsetAcc, left, true, out left); offsetAcc = offset + (bytesTransferred - left); } if (IsClosed) return; if (commandInfo == null) break; try { ExecuteCommand(commandInfo); } catch (Exception exc) { AppServer.Logger.LogError(this, exc); HandleExceptionalError(exc); } if (left <= 0) break; bytesTransferred = left; offset = e.Offset + e.BytesTransferred - left; }