Skip to content

Commit 9dbff89

Browse files
authored
Merge pull request #449 from smartdevicelink/bugfix/issue_443
Bugfix/issue 443
2 parents 17da361 + 6f4cc35 commit 9dbff89

File tree

2 files changed

+76
-13
lines changed

2 files changed

+76
-13
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package com.smartdevicelink.transport;
2+
3+
import android.os.Handler;
4+
import android.os.Looper;
5+
import android.os.Messenger;
6+
import android.test.AndroidTestCase;
7+
8+
9+
/**
10+
* Created by brettywhite on 4/4/17.
11+
*/
12+
13+
public class RegisteredAppTests extends AndroidTestCase {
14+
15+
private static final String APP_ID = "123451123";
16+
private static final Messenger messenger = null;
17+
private static byte[] bytes = new byte[1];
18+
19+
public void testHandleMessage() {
20+
21+
// Run Test in Main Thread
22+
new Handler(Looper.getMainLooper()).post(new Runnable() {
23+
@Override
24+
public void run() {
25+
26+
// Instantiate SdlRouterService and Registered App class
27+
SdlRouterService router = new SdlRouterService();
28+
SdlRouterService.RegisteredApp app = router.new RegisteredApp(APP_ID, messenger);
29+
30+
// Call Handle Message
31+
app.handleMessage(TransportConstants.BYTES_TO_SEND_FLAG_LARGE_PACKET_START,bytes);
32+
33+
// Insure that the buffer is not null, if it is the test will fail
34+
assertNotNull(app.buffer);
35+
36+
}
37+
});
38+
}
39+
40+
public void testNullBuffer() {
41+
42+
// Run Test in Main Thread
43+
new Handler(Looper.getMainLooper()).post(new Runnable() {
44+
@Override
45+
public void run() {
46+
47+
// Instantiate SdlRouterService and Registered App class
48+
SdlRouterService router = new SdlRouterService();
49+
SdlRouterService.RegisteredApp app = router.new RegisteredApp(APP_ID, messenger);
50+
51+
// Force Null Buffer
52+
app.buffer = null;
53+
54+
// Call Handle Message - Making sure it doesn't init buffer
55+
app.handleMessage(TransportConstants.BYTES_TO_SEND_FLAG_NONE,bytes);
56+
57+
// Insure that the buffer is null. and no NPE
58+
assertNull(app.buffer);
59+
60+
}
61+
});
62+
}
63+
}
64+

sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2263,21 +2263,20 @@ public void handleMessage(int flags, byte[] packet){
22632263
buffer = new ByteAraryMessageAssembler();
22642264
buffer.init();
22652265
}
2266-
if(buffer == null){
2267-
Log.e(TAG, "Unable to assemble message as buffer was null/not started");
2268-
}
2269-
if(!buffer.handleMessage(flags, packet)){ //If this returns false
2270-
Log.e(TAG, "Error handling bytes");
2271-
}
2272-
if(buffer.isFinished()){ //We are finished building the buffer so we should write the bytes out
2273-
byte[] bytes = buffer.getBytes();
2274-
if(queue!=null){
2275-
queue.add(new PacketWriteTask(bytes, 0, bytes.length,this.prioirtyForBuffingMessage));
2276-
if(packetWriteTaskMaster!=null){
2277-
packetWriteTaskMaster.alert();
2266+
if(buffer != null){
2267+
if (!buffer.handleMessage(flags, packet)) { //If this returns false
2268+
Log.e(TAG, "Error handling bytes");
2269+
}
2270+
if (buffer.isFinished()) { //We are finished building the buffer so we should write the bytes out
2271+
byte[] bytes = buffer.getBytes();
2272+
if (queue != null) {
2273+
queue.add(new PacketWriteTask(bytes, 0, bytes.length, this.prioirtyForBuffingMessage));
2274+
if (packetWriteTaskMaster != null) {
2275+
packetWriteTaskMaster.alert();
2276+
}
22782277
}
2278+
buffer.close();
22792279
}
2280-
buffer.close();
22812280
}
22822281
}
22832282

0 commit comments

Comments
 (0)