You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Because the disconnect/stop was called in lower levels but not in the manager, there is no restart method for the transport object. No component of sdl_ios is now listening to EAConnect notifications. As a result the app will never connect to any head unit until it's killed and restarted on the phone.
Reproduction Steps
Install SDL Example on an iPhone
Connect iPhone to a head unit
Wait for the StartService timeout to occur
Disconnect iPhone
Reconnect iPhone
Expected Behavior
The app should try to connect again.
Observed Behavior
The app removed observer to EAConnect. It will never be able to connect to the head unit.
OS & Version Information
iOS Version: Any
SDL iOS Version: 7.0.0
Testing Against: SDL Example
Test Case, Sample Code, and / or Example App
The issue is more visible on SYNC3.0 if >20 apps are installed. It's possible to stop SDL Core on the SYNC3.0 to make it easier to reproduce/test. Details can be shared separately.
The text was updated successfully, but these errors were encountered:
I tested some options and the change in the PR don't seem to work perfectly. I could spend more effort in refactoring some aspects of the iAP transport class. I also tested removing the timeout altogether and it did not only improve in the number of apps successfully connecting, it also eliminates this bug. removing the timeout should be a task in #1783 and closing this issue as not applicable anymore.
I would like to get some feedback by the PM if this approach is acceptable or if more effort should be done for the transport class. The question is why should we timeout if the protocol string itself gives confidence enough that the EA is an SDL device? the lib successfully tears down on EA disconnect even with timeout removed.
Bug Report
In some cases the head unit takes more time to respond to StartService for RPC request and the library hits the timeout. See https://github.com/smartdevicelink/sdl_ios/blob/7.0.0/SmartDeviceLink/private/SDLLifecycleProtocolHandler.m#L86
This will cause the Protocol to close and end the transport.
https://github.com/smartdevicelink/sdl_ios/blob/7.0.0/SmartDeviceLink/private/SDLProtocol.m#L89
https://github.com/smartdevicelink/sdl_ios/blob/7.0.0/SmartDeviceLink/private/SDLIAPTransport.m#L218
In the transport class following code will be executed:
Because the disconnect/stop was called in lower levels but not in the manager, there is no restart method for the transport object. No component of sdl_ios is now listening to EAConnect notifications. As a result the app will never connect to any head unit until it's killed and restarted on the phone.
Reproduction Steps
Expected Behavior
The app should try to connect again.
Observed Behavior
The app removed observer to EAConnect. It will never be able to connect to the head unit.
OS & Version Information
Test Case, Sample Code, and / or Example App
The issue is more visible on SYNC3.0 if >20 apps are installed. It's possible to stop SDL Core on the SYNC3.0 to make it easier to reproduce/test. Details can be shared separately.
The text was updated successfully, but these errors were encountered: