void onGoAwayRead0(ChannelHandlerContext ctx, int lastStreamId, long errorCode, ByteBuf debugData) throws Http2Exception { connection.goAwayReceived(lastStreamId, errorCode, debugData); listener.onGoAwayRead(ctx, lastStreamId, errorCode, debugData); }
private void checkShutdownHandler() { Handler<Void> shutdownHandler; synchronized (this) { if (shutdown) { return; } Http2Connection conn = handler.connection(); if ((!conn.goAwayReceived() && !conn.goAwaySent()) || conn.numActiveStreams() > 0) { return; } shutdown = true; shutdownHandler = this.shutdownHandler; } if (shutdownHandler != null) { context.executeFromIO(shutdownHandler); } } }
@Override public ChannelFuture writeHeaders(ChannelHandlerContext ctx, int streamId, Http2Headers headers, int streamDependency, short weight, boolean exclusive, int padding, boolean endOfStream, ChannelPromise promise) { if (closed) { return promise.setFailure(new Http2ChannelClosedException()); } if (isExistingStream(streamId) || connection().goAwayReceived()) { return super.writeHeaders(ctx, streamId, headers, streamDependency, weight, exclusive, padding, endOfStream, promise); } if (canCreateStream()) { return super.writeHeaders(ctx, streamId, headers, streamDependency, weight, exclusive, padding, endOfStream, promise); } PendingStream pendingStream = pendingStreams.get(streamId); if (pendingStream == null) { pendingStream = new PendingStream(ctx, streamId); pendingStreams.put(streamId, pendingStream); } pendingStream.frames.add(new HeadersFrame(headers, streamDependency, weight, exclusive, padding, endOfStream, promise)); return promise; }
Http2Headers headers, int padding, ChannelPromise promise) { try { if (connection.goAwayReceived()) { throw connectionError(PROTOCOL_ERROR, "Sending PUSH_PROMISE after GO_AWAY received.");
private void checkShutdownHandler() { Handler<Void> shutdownHandler; synchronized (this) { if (shutdown) { return; } Http2Connection conn = handler.connection(); if ((!conn.goAwayReceived() && !conn.goAwaySent()) || conn.numActiveStreams() > 0) { return; } shutdown = true; shutdownHandler = this.shutdownHandler; } if (shutdownHandler != null) { context.executeFromIO(shutdownHandler); } } }
void onGoAwayRead0(ChannelHandlerContext ctx, int lastStreamId, long errorCode, ByteBuf debugData) throws Http2Exception { connection.goAwayReceived(lastStreamId, errorCode, debugData); listener.onGoAwayRead(ctx, lastStreamId, errorCode, debugData); }
void onGoAwayRead0(ChannelHandlerContext ctx, int lastStreamId, long errorCode, ByteBuf debugData) throws Http2Exception { if (connection.goAwayReceived() && connection.local().lastStreamKnownByPeer() < lastStreamId) { throw connectionError(PROTOCOL_ERROR, "lastStreamId MUST NOT increase. Current value: %d new value: %d", connection.local().lastStreamKnownByPeer(), lastStreamId); } listener.onGoAwayRead(ctx, lastStreamId, errorCode, debugData); connection.goAwayReceived(lastStreamId, errorCode, debugData); }
void onGoAwayRead0(ChannelHandlerContext ctx, int lastStreamId, long errorCode, ByteBuf debugData) throws Http2Exception { if (connection.goAwayReceived() && connection.local().lastStreamKnownByPeer() < lastStreamId) { throw connectionError(PROTOCOL_ERROR, "lastStreamId MUST NOT increase. Current value: %d new value: %d", connection.local().lastStreamKnownByPeer(), lastStreamId); } listener.onGoAwayRead(ctx, lastStreamId, errorCode, debugData); connection.goAwayReceived(lastStreamId, errorCode, debugData); }
void onGoAwayRead0(ChannelHandlerContext ctx, int lastStreamId, long errorCode, ByteBuf debugData) throws Http2Exception { if (connection.goAwayReceived() && connection.local().lastStreamKnownByPeer() < lastStreamId) { throw connectionError(PROTOCOL_ERROR, "lastStreamId MUST NOT increase. Current value: %d new value: %d", connection.local().lastStreamKnownByPeer(), lastStreamId); } listener.onGoAwayRead(ctx, lastStreamId, errorCode, debugData); connection.goAwayReceived(lastStreamId, errorCode, debugData); }
@Override public ChannelFuture writeHeaders(ChannelHandlerContext ctx, int streamId, Http2Headers headers, int streamDependency, short weight, boolean exclusive, int padding, boolean endOfStream, ChannelPromise promise) { if (closed) { return promise.setFailure(new Http2ChannelClosedException()); } if (isExistingStream(streamId) || connection().goAwayReceived()) { return super.writeHeaders(ctx, streamId, headers, streamDependency, weight, exclusive, padding, endOfStream, promise); } if (canCreateStream()) { return super.writeHeaders(ctx, streamId, headers, streamDependency, weight, exclusive, padding, endOfStream, promise); } PendingStream pendingStream = pendingStreams.get(streamId); if (pendingStream == null) { pendingStream = new PendingStream(ctx, streamId); pendingStreams.put(streamId, pendingStream); } pendingStream.frames.add(new HeadersFrame(headers, streamDependency, weight, exclusive, padding, endOfStream, promise)); return promise; }
@Override public ChannelFuture writeHeaders(ChannelHandlerContext ctx, int streamId, Http2Headers headers, int streamDependency, short weight, boolean exclusive, int padding, boolean endOfStream, ChannelPromise promise) { if (closed) { return promise.setFailure(new Http2ChannelClosedException()); } if (isExistingStream(streamId) || connection().goAwayReceived()) { return super.writeHeaders(ctx, streamId, headers, streamDependency, weight, exclusive, padding, endOfStream, promise); } if (canCreateStream()) { return super.writeHeaders(ctx, streamId, headers, streamDependency, weight, exclusive, padding, endOfStream, promise); } PendingStream pendingStream = pendingStreams.get(streamId); if (pendingStream == null) { pendingStream = new PendingStream(ctx, streamId); pendingStreams.put(streamId, pendingStream); } pendingStream.frames.add(new HeadersFrame(headers, streamDependency, weight, exclusive, padding, endOfStream, promise)); return promise; }
Http2Headers headers, int padding, ChannelPromise promise) { try { if (connection.goAwayReceived()) { throw connectionError(PROTOCOL_ERROR, "Sending PUSH_PROMISE after GO_AWAY received.");
Http2Headers headers, int padding, ChannelPromise promise) { try { if (connection.goAwayReceived()) { throw connectionError(PROTOCOL_ERROR, "Sending PUSH_PROMISE after GO_AWAY received.");