Skip to content

Commit e43da76

Browse files
committed
NettyReactiveStreamsBody shouldn't assume ByteBuffer has an array without offset and partial length
1 parent 3abe37b commit e43da76

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

client/src/main/java/org/asynchttpclient/netty/request/body/NettyReactiveStreamsBody.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public void onSubscribe(Subscription s) {
8181
}
8282
@Override
8383
public void onNext(ByteBuffer t) {
84-
ByteBuf buffer = Unpooled.wrappedBuffer(t.array());
84+
ByteBuf buffer = Unpooled.wrappedBuffer(t);
8585
HttpContent content = new DefaultHttpContent(buffer);
8686
subscriber.onNext(content);
8787
}

client/src/test/java/org/asynchttpclient/reactivestreams/ReactiveStreamsTest.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,15 @@
1212
*/
1313
package org.asynchttpclient.reactivestreams;
1414

15-
import static org.asynchttpclient.Dsl.*;
16-
import static org.asynchttpclient.test.TestUtils.*;
1715
import static io.netty.handler.codec.http.HttpHeaderNames.*;
16+
import static org.asynchttpclient.Dsl.*;
17+
import static org.asynchttpclient.test.TestUtils.LARGE_IMAGE_BYTES;
1818
import static org.testng.Assert.assertEquals;
1919
import io.netty.handler.codec.http.HttpHeaders;
2020

2121
import java.io.ByteArrayOutputStream;
2222
import java.nio.ByteBuffer;
2323
import java.util.ArrayList;
24-
import java.util.Arrays;
2524
import java.util.Collections;
2625
import java.util.Iterator;
2726
import java.util.List;
@@ -359,10 +358,10 @@ public boolean hasNext() {
359358

360359
@Override
361360
public ByteBuffer next() {
362-
int newIndex = Math.min(currentIndex + chunkSize, payload.length);
363-
byte[] bytesInElement = Arrays.copyOfRange(payload, currentIndex, newIndex);
364-
currentIndex = newIndex;
365-
return ByteBuffer.wrap(bytesInElement);
361+
int thisCurrentIndex = currentIndex;
362+
int length = Math.min(chunkSize, payload.length - thisCurrentIndex);
363+
currentIndex += length;
364+
return ByteBuffer.wrap(payload, thisCurrentIndex, length);
366365
}
367366

368367
@Override

0 commit comments

Comments
 (0)