Skip to content

Commit a284a56

Browse files
author
Robert Henigan
authored
Merge pull request #1659 from smartdevicelink/bugfix/session_npe
Add null checks and synch around session in LCM
2 parents 7551226 + 7937db9 commit a284a56

1 file changed

Lines changed: 37 additions & 7 deletions

File tree

base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseLifecycleManager.java

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import com.smartdevicelink.marshal.JsonRPCMarshaller;
4545
import com.smartdevicelink.protocol.ISdlServiceListener;
4646
import com.smartdevicelink.protocol.ProtocolMessage;
47+
import com.smartdevicelink.protocol.SdlProtocolBase;
4748
import com.smartdevicelink.protocol.enums.FunctionID;
4849
import com.smartdevicelink.protocol.enums.MessageType;
4950
import com.smartdevicelink.protocol.enums.SessionType;
@@ -987,17 +988,30 @@ public void stop() {
987988

988989
@Override
989990
public boolean isConnected() {
990-
return BaseLifecycleManager.this.session.getIsConnected();
991+
synchronized (BaseLifecycleManager.this) {
992+
if (BaseLifecycleManager.this.session != null) {
993+
return BaseLifecycleManager.this.session.getIsConnected();
994+
}
995+
}
996+
return false;
991997
}
992998

993999
@Override
9941000
public void addServiceListener(SessionType serviceType, ISdlServiceListener sdlServiceListener) {
995-
BaseLifecycleManager.this.session.addServiceListener(serviceType, sdlServiceListener);
1001+
synchronized (BaseLifecycleManager.this) {
1002+
if(BaseLifecycleManager.this.session != null ){
1003+
BaseLifecycleManager.this.session.addServiceListener(serviceType, sdlServiceListener);
1004+
}
1005+
}
9961006
}
9971007

9981008
@Override
9991009
public void removeServiceListener(SessionType serviceType, ISdlServiceListener sdlServiceListener) {
1000-
BaseLifecycleManager.this.session.removeServiceListener(serviceType, sdlServiceListener);
1010+
synchronized (BaseLifecycleManager.this) {
1011+
if (BaseLifecycleManager.this.session != null) {
1012+
BaseLifecycleManager.this.session.removeServiceListener(serviceType, sdlServiceListener);
1013+
}
1014+
}
10011015
}
10021016

10031017
@Override
@@ -1064,14 +1078,25 @@ public RegisterAppInterfaceResponse getRegisterAppInterfaceResponse() {
10641078

10651079
@Override
10661080
public boolean isTransportForServiceAvailable(SessionType serviceType) {
1067-
return BaseLifecycleManager.this.session.isTransportForServiceAvailable(serviceType);
1081+
synchronized (BaseLifecycleManager.this) {
1082+
if (BaseLifecycleManager.this.session != null) {
1083+
return BaseLifecycleManager.this.session.isTransportForServiceAvailable(serviceType);
1084+
}
1085+
}
1086+
return false;
10681087
}
10691088

10701089
@NonNull
10711090
@Override
10721091
public SdlMsgVersion getSdlMsgVersion() {
1073-
SdlMsgVersion msgVersion = new SdlMsgVersion(rpcSpecVersion.getMajor(), rpcSpecVersion.getMinor());
1074-
msgVersion.setPatchVersion(rpcSpecVersion.getPatch());
1092+
SdlMsgVersion msgVersion;
1093+
if(rpcSpecVersion != null) {
1094+
msgVersion = new SdlMsgVersion(rpcSpecVersion.getMajor(), rpcSpecVersion.getMinor());
1095+
msgVersion.setPatchVersion(rpcSpecVersion.getPatch());
1096+
} else {
1097+
msgVersion = new SdlMsgVersion(1,0);
1098+
}
1099+
10751100
return msgVersion;
10761101
}
10771102

@@ -1083,7 +1108,12 @@ public Version getProtocolVersion() {
10831108

10841109
@Override
10851110
public long getMtu(SessionType serviceType) {
1086-
return BaseLifecycleManager.this.session.getMtu(serviceType);
1111+
synchronized (BaseLifecycleManager.this) {
1112+
if (BaseLifecycleManager.this.session != null) {
1113+
return BaseLifecycleManager.this.session.getMtu(serviceType);
1114+
}
1115+
}
1116+
return SdlProtocolBase.V1_V2_MTU_SIZE;
10871117
}
10881118

10891119
@Override

0 commit comments

Comments
 (0)