no automatic reconnect on registration failures
This commit is contained in:
parent
d6193aa586
commit
097fe3e1b6
|
@ -109,45 +109,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);
|
||||
this(true,true);
|
||||
}
|
||||
|
||||
public int getReadableId() {
|
||||
|
|
|
@ -375,7 +375,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) {
|
||||
|
@ -749,7 +749,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) {
|
||||
|
|
Loading…
Reference in a new issue