no automatic reconnect on registration failures
This commit is contained in:
parent
8246154a36
commit
fb77aa9153
2 changed files with 38 additions and 28 deletions
|
@ -111,45 +111,55 @@ public class Account extends AbstractEntity {
|
|||
}
|
||||
|
||||
public enum State {
|
||||
DISABLED,
|
||||
OFFLINE,
|
||||
CONNECTING,
|
||||
ONLINE,
|
||||
NO_INTERNET,
|
||||
UNAUTHORIZED(true),
|
||||
SERVER_NOT_FOUND(true),
|
||||
REGISTRATION_FAILED(true),
|
||||
REGISTRATION_WEB(true),
|
||||
REGISTRATION_CONFLICT(true),
|
||||
REGISTRATION_SUCCESSFUL,
|
||||
REGISTRATION_NOT_SUPPORTED(true),
|
||||
TLS_ERROR(true),
|
||||
INCOMPATIBLE_SERVER(true),
|
||||
TOR_NOT_AVAILABLE(true),
|
||||
DOWNGRADE_ATTACK(true),
|
||||
SESSION_FAILURE(true),
|
||||
BIND_FAILURE(true),
|
||||
HOST_UNKNOWN(true),
|
||||
REGISTRATION_PLEASE_WAIT(true),
|
||||
STREAM_ERROR(true),
|
||||
POLICY_VIOLATION(true),
|
||||
REGISTRATION_PASSWORD_TOO_WEAK(true),
|
||||
PAYMENT_REQUIRED(true),
|
||||
MISSING_INTERNET_PERMISSION(true),
|
||||
DISABLED(false, false),
|
||||
OFFLINE(false),
|
||||
CONNECTING(false),
|
||||
ONLINE(false),
|
||||
NO_INTERNET(false),
|
||||
UNAUTHORIZED,
|
||||
SERVER_NOT_FOUND,
|
||||
REGISTRATION_SUCCESSFUL(false),
|
||||
REGISTRATION_FAILED(true, false),
|
||||
REGISTRATION_WEB(true, false),
|
||||
REGISTRATION_CONFLICT(true, false),
|
||||
REGISTRATION_NOT_SUPPORTED(true, false),
|
||||
REGISTRATION_PLEASE_WAIT(true, false),
|
||||
REGISTRATION_PASSWORD_TOO_WEAK(true, false),
|
||||
TLS_ERROR,
|
||||
INCOMPATIBLE_SERVER,
|
||||
TOR_NOT_AVAILABLE,
|
||||
DOWNGRADE_ATTACK,
|
||||
SESSION_FAILURE,
|
||||
BIND_FAILURE,
|
||||
HOST_UNKNOWN,
|
||||
STREAM_ERROR,
|
||||
POLICY_VIOLATION,
|
||||
PAYMENT_REQUIRED,
|
||||
MISSING_INTERNET_PERMISSION(false),
|
||||
NETWORK_IS_UNREACHABLE(false);
|
||||
|
||||
private final boolean isError;
|
||||
private final boolean attemptReconnect;
|
||||
|
||||
public boolean isError() {
|
||||
return this.isError;
|
||||
}
|
||||
|
||||
public boolean isAttemptReconnect() {
|
||||
return this.attemptReconnect;
|
||||
}
|
||||
|
||||
State(final boolean isError) {
|
||||
this(isError, true);
|
||||
}
|
||||
|
||||
State(final boolean isError, final boolean reconnect) {
|
||||
this.isError = isError;
|
||||
this.attemptReconnect = reconnect;
|
||||
}
|
||||
|
||||
State() {
|
||||
this(false);
|
||||
tthis(true, true);
|
||||
}
|
||||
|
||||
public int getReadableId() {
|
||||
|
|
|
@ -383,7 +383,7 @@ public class XmppConnectionService extends Service {
|
|||
reconnectAccount(account, true, false);
|
||||
} else if (account.getStatus() != Account.State.CONNECTING && account.getStatus() != Account.State.NO_INTERNET) {
|
||||
resetSendingToWaiting(account);
|
||||
if (connection != null) {
|
||||
if (connection != null && account.getStatus().isAttemptReconnect()) {
|
||||
final int next = connection.getTimeToNextAttempt();
|
||||
final boolean lowPingTimeoutMode = isInLowPingTimeoutMode(account);
|
||||
if (next <= 0) {
|
||||
|
@ -759,7 +759,7 @@ public class XmppConnectionService extends Service {
|
|||
|
||||
private boolean processAccountState(Account account, boolean interactive, boolean isUiAction, boolean isAccountPushed, HashSet<Account> pingCandidates) {
|
||||
boolean pingNow = false;
|
||||
if (!account.isOptionSet(Account.OPTION_DISABLED)) {
|
||||
if (account.getStatus().isAttemptReconnect()) {
|
||||
if (!hasInternetConnection()) {
|
||||
account.setStatus(Account.State.NO_INTERNET);
|
||||
if (statusListener != null) {
|
||||
|
|
Reference in a new issue