Skip to content

Commit 68217e0

Browse files
authored
Merge pull request #31 from dpapworth/fix_netty
Fix ByteBuf handling for newer versions of Netty
2 parents 3fa8d23 + b29255f commit 68217e0

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@
142142
<dependency>
143143
<groupId>io.netty</groupId>
144144
<artifactId>netty-all</artifactId>
145-
<version>4.0.34.Final</version>
145+
<version>4.0.39.Final</version>
146146
</dependency>
147147

148148
<dependency>
@@ -173,7 +173,7 @@
173173
<dependency>
174174
<groupId>io.netty</groupId>
175175
<artifactId>netty-tcnative</artifactId>
176-
<version>1.1.33.Fork11</version>
176+
<version>1.1.33.Fork18</version>
177177
<classifier>${os.detected.classifier}</classifier>
178178
<scope>test</scope>
179179
</dependency>

src/main/java/com/github/brainlag/nsq/frames/MessageFrame.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,14 @@ public void setData(byte[] bytes) {
1818
timestamp = buf.readLong();
1919
attempts = buf.readShort();
2020
buf.readBytes(messageId);
21-
messageBody = buf.readBytes(buf.readableBytes()).array();
21+
ByteBuf messageBodyBuf = buf.readBytes(buf.readableBytes());
22+
if (messageBodyBuf.hasArray()) {
23+
messageBody = messageBodyBuf.array();
24+
} else {
25+
byte[] array = new byte[messageBodyBuf.readableBytes()];
26+
messageBodyBuf.readBytes(array);
27+
messageBody = array;
28+
}
2229
}
2330

2431
public long getTimestamp() {

src/main/java/com/github/brainlag/nsq/netty/NSQDecoder.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,13 @@ protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) t
2626
}
2727
frame.setSize(size);
2828
ByteBuf bytes = in.readBytes(frame.getSize() - 4); //subtract 4 because the frame id is included
29-
frame.setData(bytes.array());
29+
if (bytes.hasArray()) {
30+
frame.setData(bytes.array());
31+
} else {
32+
byte[] array = new byte[bytes.readableBytes()];
33+
bytes.readBytes(array);
34+
frame.setData(array);
35+
}
3036
out.add(frame);
3137
}
3238

0 commit comments

Comments
 (0)