diff --git a/jellyfin_kodi/connect.py b/jellyfin_kodi/connect.py index 2e95bc2b..641d1f5d 100644 --- a/jellyfin_kodi/connect.py +++ b/jellyfin_kodi/connect.py @@ -119,6 +119,10 @@ class Connect(object): if 'ExchangeToken' not in state['Servers'][0]: self.login() + elif state['State'] == CONNECTION_STATE['Unavailable'] and state['Status_Code'] == 401: + # If the saved credentials don't work, restart the addon to force the password dialog to open + window('jellyfin.restart', clear=True) + elif state['State'] == CONNECTION_STATE['Unavailable']: raise HTTPException('ServerUnreachable', {}) diff --git a/jellyfin_kodi/jellyfin/api.py b/jellyfin_kodi/jellyfin/api.py index 48c8f023..686588b3 100644 --- a/jellyfin_kodi/jellyfin/api.py +++ b/jellyfin_kodi/jellyfin/api.py @@ -430,7 +430,11 @@ class API(object): headers.update(auth_token_header) response = self.send_request(server['address'], "system/info", headers=headers) - return response.json() if response.status_code == 200 else {} + + if response.status_code == 200: + return response.json() + else: + return response.status_code def get_public_info(self, server_address): response = self.send_request(server_address, "system/info/public") diff --git a/jellyfin_kodi/jellyfin/connection_manager.py b/jellyfin_kodi/jellyfin/connection_manager.py index d6e87115..a23ef4f3 100644 --- a/jellyfin_kodi/jellyfin/connection_manager.py +++ b/jellyfin_kodi/jellyfin/connection_manager.py @@ -309,7 +309,7 @@ class ConnectionManager(object): elif verify_authentication and server.get('AccessToken'): system_info = self.API.validate_authentication_token(server) - if system_info: + if system_info and type(system_info) == dict: self._update_server_info(server, system_info) self.config.data['auth.user_id'] = server['UserId'] @@ -319,7 +319,9 @@ class ConnectionManager(object): server['UserId'] = None server['AccessToken'] = None - return {'State': CONNECTION_STATE['Unavailable']} + return { + 'State': CONNECTION_STATE['Unavailable'], + 'Status_Code': system_info} self._update_server_info(server, system_info)