Skip to content

Commit b29f9da

Browse files
author
Stephane Landelle
committed
Fix non thread safe pendingOpcode
1 parent 64b543f commit b29f9da

File tree

1 file changed

+2
-12
lines changed

1 file changed

+2
-12
lines changed

providers/netty/src/main/java/org/asynchttpclient/providers/netty/handler/WebSocketProtocol.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,6 @@ final class WebSocketProtocol extends Protocol {
5353

5454
private static final Logger LOGGER = LoggerFactory.getLogger(WebSocketProtocol.class);
5555

56-
private static final byte OPCODE_TEXT = 0x1;
57-
private static final byte OPCODE_BINARY = 0x2;
58-
private static final byte OPCODE_UNKNOWN = -1;
59-
// FIXME How is this threadsafe? WebSocketProtocol instance is a member of NettyChannelHandler which is @Shareable
60-
protected byte pendingOpcode = OPCODE_UNKNOWN;
61-
6256
public WebSocketProtocol(Channels channels, AsyncHttpClientConfig config, NettyAsyncHttpProviderConfig nettyConfig, NettyRequestSender requestSender) {
6357
super(channels, config, nettyConfig, requestSender);
6458
}
@@ -134,19 +128,15 @@ public void handle(ChannelHandlerContext ctx, NettyResponseFuture future, Object
134128
CloseWebSocketFrame closeFrame = CloseWebSocketFrame.class.cast(frame);
135129
webSocket.onClose(closeFrame.statusCode(), closeFrame.reasonText());
136130
} else {
137-
if (frame instanceof TextWebSocketFrame) {
138-
pendingOpcode = OPCODE_TEXT;
139-
} else if (frame instanceof BinaryWebSocketFrame) {
140-
pendingOpcode = OPCODE_BINARY;
141-
}
131+
boolean binaryFrame = frame instanceof BinaryWebSocketFrame;
142132

143133
ByteBuf buf = frame.content();
144134
if (buf != null && buf.readableBytes() > 0) {
145135
try {
146136
ResponseBodyPart rp = nettyConfig.getBodyPartFactory().newResponseBodyPart(buf, frame.isFinalFragment());
147137
h.onBodyPartReceived(rp);
148138

149-
if (pendingOpcode == OPCODE_BINARY) {
139+
if (binaryFrame) {
150140
webSocket.onBinaryFragment(rp.getBodyPartBytes(), frame.isFinalFragment());
151141
} else {
152142
webSocket.onTextFragment(buf.toString(Constants.UTF8), frame.isFinalFragment());

0 commit comments

Comments
 (0)