diff options
author | Joey Grover <joeygrover@gmail.com> | 2021-04-15 11:57:53 -0400 |
---|---|---|
committer | Joey Grover <joeygrover@gmail.com> | 2021-04-15 11:57:53 -0400 |
commit | 7937db9bab5b5a425785c8d98151a886e7f264ad (patch) | |
tree | 43da6e3d6265b0140734f0cade91aed13d1efa39 | |
parent | 75512263f50748901b99487e8eb1bcdd9e551fb8 (diff) | |
download | sdl_android-bugfix/session_npe.tar.gz |
Add null checks and synch around sesssion in LCMbugfix/session_npe
-rw-r--r-- | base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseLifecycleManager.java | 44 |
1 files changed, 37 insertions, 7 deletions
diff --git a/base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseLifecycleManager.java b/base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseLifecycleManager.java index 7073ad7ba..57cf59ff8 100644 --- a/base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseLifecycleManager.java +++ b/base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseLifecycleManager.java @@ -44,6 +44,7 @@ import com.smartdevicelink.managers.permission.PermissionManager; import com.smartdevicelink.marshal.JsonRPCMarshaller; import com.smartdevicelink.protocol.ISdlServiceListener; import com.smartdevicelink.protocol.ProtocolMessage; +import com.smartdevicelink.protocol.SdlProtocolBase; import com.smartdevicelink.protocol.enums.FunctionID; import com.smartdevicelink.protocol.enums.MessageType; import com.smartdevicelink.protocol.enums.SessionType; @@ -987,17 +988,30 @@ abstract class BaseLifecycleManager { @Override public boolean isConnected() { - return BaseLifecycleManager.this.session.getIsConnected(); + synchronized (BaseLifecycleManager.this) { + if (BaseLifecycleManager.this.session != null) { + return BaseLifecycleManager.this.session.getIsConnected(); + } + } + return false; } @Override public void addServiceListener(SessionType serviceType, ISdlServiceListener sdlServiceListener) { - BaseLifecycleManager.this.session.addServiceListener(serviceType, sdlServiceListener); + synchronized (BaseLifecycleManager.this) { + if(BaseLifecycleManager.this.session != null ){ + BaseLifecycleManager.this.session.addServiceListener(serviceType, sdlServiceListener); + } + } } @Override public void removeServiceListener(SessionType serviceType, ISdlServiceListener sdlServiceListener) { - BaseLifecycleManager.this.session.removeServiceListener(serviceType, sdlServiceListener); + synchronized (BaseLifecycleManager.this) { + if (BaseLifecycleManager.this.session != null) { + BaseLifecycleManager.this.session.removeServiceListener(serviceType, sdlServiceListener); + } + } } @Override @@ -1064,14 +1078,25 @@ abstract class BaseLifecycleManager { @Override public boolean isTransportForServiceAvailable(SessionType serviceType) { - return BaseLifecycleManager.this.session.isTransportForServiceAvailable(serviceType); + synchronized (BaseLifecycleManager.this) { + if (BaseLifecycleManager.this.session != null) { + return BaseLifecycleManager.this.session.isTransportForServiceAvailable(serviceType); + } + } + return false; } @NonNull @Override public SdlMsgVersion getSdlMsgVersion() { - SdlMsgVersion msgVersion = new SdlMsgVersion(rpcSpecVersion.getMajor(), rpcSpecVersion.getMinor()); - msgVersion.setPatchVersion(rpcSpecVersion.getPatch()); + SdlMsgVersion msgVersion; + if(rpcSpecVersion != null) { + msgVersion = new SdlMsgVersion(rpcSpecVersion.getMajor(), rpcSpecVersion.getMinor()); + msgVersion.setPatchVersion(rpcSpecVersion.getPatch()); + } else { + msgVersion = new SdlMsgVersion(1,0); + } + return msgVersion; } @@ -1083,7 +1108,12 @@ abstract class BaseLifecycleManager { @Override public long getMtu(SessionType serviceType) { - return BaseLifecycleManager.this.session.getMtu(serviceType); + synchronized (BaseLifecycleManager.this) { + if (BaseLifecycleManager.this.session != null) { + return BaseLifecycleManager.this.session.getMtu(serviceType); + } + } + return SdlProtocolBase.V1_V2_MTU_SIZE; } @Override |