protected void emptyBody(ByteBuffer buffer) { connectionFailure(buffer, ErrorCode.PROTOCOL_ERROR.code, "invalid_frame"); }
protected void streamFailure(int streamId, int error, String reason) { notifyStreamFailure(streamId, error, reason); }
protected boolean parseBody(ByteBuffer buffer) { int type = getFrameType(); if (type < 0 || type >= bodyParsers.length) { // Unknown frame types must be ignored. if (LOG.isDebugEnabled()) LOG.debug("Ignoring unknown frame type {}", Integer.toHexString(type)); if (!unknownBodyParser.parse(buffer)) return false; reset(); return true; } BodyParser bodyParser = bodyParsers[type]; if (headerParser.getLength() == 0) { bodyParser.emptyBody(buffer); } else { if (!bodyParser.parse(buffer)) return false; } if (LOG.isDebugEnabled()) LOG.debug("Parsed {} frame body from {}", FrameType.from(type), buffer); reset(); return true; }
notifier.streamFailure(headerParser.getStreamId(), ErrorCode.PROTOCOL_ERROR.code, "invalid_hpack_block"); return STREAM_FAILURE; notifier.connectionFailure(buffer, ErrorCode.COMPRESSION_ERROR.code, "invalid_hpack_block"); return SESSION_FAILURE; notifier.connectionFailure(buffer, ErrorCode.PROTOCOL_ERROR.code, "invalid_hpack_block"); return SESSION_FAILURE;
protected boolean connectionFailure(ByteBuffer buffer, int error, String reason) { BufferUtil.clear(buffer); notifyConnectionFailure(error, reason); return false; }
protected boolean parseBody(ByteBuffer buffer) { int type = getFrameType(); if (type < 0 || type >= bodyParsers.length) { // Unknown frame types must be ignored. if (LOG.isDebugEnabled()) LOG.debug("Ignoring unknown frame type {}", Integer.toHexString(type)); if (!unknownBodyParser.parse(buffer)) return false; reset(); return true; } BodyParser bodyParser = bodyParsers[type]; if (headerParser.getLength() == 0) { bodyParser.emptyBody(buffer); } else { if (!bodyParser.parse(buffer)) return false; } if (LOG.isDebugEnabled()) LOG.debug("Parsed {} frame body from {}", FrameType.from(type), buffer); reset(); return true; }
notifier.streamFailure(headerParser.getStreamId(), ErrorCode.PROTOCOL_ERROR.code, "invalid_hpack_block"); return STREAM_FAILURE; notifier.connectionFailure(buffer, ErrorCode.COMPRESSION_ERROR.code, "invalid_hpack_block"); return SESSION_FAILURE; notifier.connectionFailure(buffer, ErrorCode.PROTOCOL_ERROR.code, "invalid_hpack_block"); return SESSION_FAILURE;
protected boolean connectionFailure(ByteBuffer buffer, int error, String reason) { BufferUtil.clear(buffer); notifyConnectionFailure(error, reason); return false; }
protected void streamFailure(int streamId, int error, String reason) { notifyStreamFailure(streamId, error, reason); }
protected void emptyBody(ByteBuffer buffer) { connectionFailure(buffer, ErrorCode.PROTOCOL_ERROR.code, "invalid_frame"); }