diff --git a/lib/reducers/keyserver-reducer.js b/lib/reducers/keyserver-reducer.js --- a/lib/reducers/keyserver-reducer.js +++ b/lib/reducers/keyserver-reducer.js @@ -163,6 +163,15 @@ }, }; } + if (action.payload.error === 'client_version_unsupported') { + newKeyserverInfo = { + ...newKeyserverInfo, + connection: { + ...newKeyserverInfo.connection, + connectionIssue: 'client_version_unsupported', + }, + }; + } const operations: ReplaceKeyserverOperation[] = []; if (newKeyserverInfo !== state.keyserverInfos[keyserverID]) { diff --git a/lib/socket/socket.react.js b/lib/socket/socket.react.js --- a/lib/socket/socket.react.js +++ b/lib/socket/socket.react.js @@ -479,14 +479,30 @@ }); } } else if (message.type === serverSocketMessageTypes.AUTH_ERROR) { - this.props.dispatch({ - type: setActiveSessionRecoveryActionType, - payload: { - activeSessionRecovery: - recoveryActionSources.socketAuthErrorResolutionAttempt, - keyserverID: this.props.keyserverID, - }, - }); + if (message.message === 'client_version_unsupported') { + this.props.dispatch({ + type: setNewSessionActionType, + payload: { + sessionChange: { + ...message.sessionChange, + cookieInvalidated: true, + }, + preRequestUserState: this.initializedWithUserState, + error: message.message, + authActionSource: undefined, + keyserverID: this.props.keyserverID, + }, + }); + } else { + this.props.dispatch({ + type: setActiveSessionRecoveryActionType, + payload: { + activeSessionRecovery: + recoveryActionSources.socketAuthErrorResolutionAttempt, + keyserverID: this.props.keyserverID, + }, + }); + } } };