HTTP/2 ByteBufUtil.writeUtf8 cleanup
Motiviation:691bc1690e
made writeUtf8 consistent with String.getBytes() so that it never throws.94f27be59b
provided a writeUtf8 method which takes a ByteBufAllocator to do an appropriately sized buffer allocation. Result: - Assume writeUtf8 will not throw in HTTP/2 codec - Use the new writeUtf8 method Result: Cleaner code in codec-http2.
This commit is contained in:
parent
bfbef036a8
commit
404666d247
@ -150,18 +150,7 @@ public final class Http2CodecUtil {
|
|||||||
return Unpooled.EMPTY_BUFFER;
|
return Unpooled.EMPTY_BUFFER;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the debug message. `* 3` because UTF-8 max character consumes 3 bytes.
|
return ByteBufUtil.writeUtf8(ctx.alloc(), cause.getMessage());
|
||||||
ByteBuf debugData = ctx.alloc().buffer(cause.getMessage().length() * 3);
|
|
||||||
boolean shouldRelease = true;
|
|
||||||
try {
|
|
||||||
ByteBufUtil.writeUtf8(debugData, cause.getMessage());
|
|
||||||
shouldRelease = false;
|
|
||||||
} finally {
|
|
||||||
if (shouldRelease) {
|
|
||||||
debugData.release();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return debugData;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -16,7 +16,6 @@ package io.netty.handler.codec.http2;
|
|||||||
|
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import io.netty.buffer.ByteBufUtil;
|
import io.netty.buffer.ByteBufUtil;
|
||||||
import io.netty.buffer.Unpooled;
|
|
||||||
import io.netty.channel.ChannelFuture;
|
import io.netty.channel.ChannelFuture;
|
||||||
import io.netty.channel.ChannelFutureListener;
|
import io.netty.channel.ChannelFutureListener;
|
||||||
import io.netty.channel.ChannelHandlerContext;
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
@ -695,15 +694,8 @@ public class Http2ConnectionHandler extends ByteToMessageDecoder implements Http
|
|||||||
*/
|
*/
|
||||||
private ChannelFuture goAway(ChannelHandlerContext ctx, Http2Exception cause) {
|
private ChannelFuture goAway(ChannelHandlerContext ctx, Http2Exception cause) {
|
||||||
long errorCode = cause != null ? cause.error().code() : NO_ERROR.code();
|
long errorCode = cause != null ? cause.error().code() : NO_ERROR.code();
|
||||||
ByteBuf debugData = Unpooled.EMPTY_BUFFER;
|
|
||||||
try {
|
|
||||||
debugData = Http2CodecUtil.toByteBuf(ctx, cause);
|
|
||||||
} catch (Throwable t) {
|
|
||||||
// We must continue on to prevent our internal state from becoming corrupted but we log this exception.
|
|
||||||
logger.warn("caught exception while translating " + cause + " to ByteBuf", t);
|
|
||||||
}
|
|
||||||
int lastKnownStream = connection().remote().lastStreamCreated();
|
int lastKnownStream = connection().remote().lastStreamCreated();
|
||||||
return goAway(ctx, lastKnownStream, errorCode, debugData, ctx.newPromise());
|
return goAway(ctx, lastKnownStream, errorCode, Http2CodecUtil.toByteBuf(ctx, cause), ctx.newPromise());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processRstStreamWriteResult(ChannelHandlerContext ctx, Http2Stream stream, ChannelFuture future) {
|
private void processRstStreamWriteResult(ChannelHandlerContext ctx, Http2Stream stream, ChannelFuture future) {
|
||||||
|
Loading…
Reference in New Issue
Block a user