display error status for missing internet permission

This commit is contained in:
Daniel Gultsch 2016-08-19 21:47:08 +02:00
parent cf909afc60
commit 285d86b375
3 changed files with 13 additions and 7 deletions

View file

@ -112,7 +112,8 @@ public class Account extends AbstractEntity {
STREAM_ERROR(true),
POLICY_VIOLATION(true),
REGISTRATION_PASSWORD_TOO_WEAK(true),
PAYMENT_REQUIRED(true);
PAYMENT_REQUIRED(true),
MISSING_INTERNET_PERMISSION(true);
private final boolean isError;
@ -172,6 +173,8 @@ public class Account extends AbstractEntity {
return R.string.account_status_stream_error;
case PAYMENT_REQUIRED:
return R.string.payment_required;
case MISSING_INTERNET_PERMISSION:
return R.string.missing_internet_permission;
default:
return R.string.account_status_unknown;
}

View file

@ -284,7 +284,7 @@ public class XmppConnection implements Runnable {
socket = tlsFactoryVerifier.factory.createSocket();
socket.connect(address, Config.SOCKET_TIMEOUT * 1000);
final SSLSession session = ((SSLSocket) socket).getSession();
if (!tlsFactoryVerifier.verifier.verify(account.getServer().getDomainpart(),session)) {
if (!tlsFactoryVerifier.verifier.verify(account.getServer().getDomainpart(), session)) {
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": TLS certificate verification failed");
throw new SecurityException();
}
@ -310,10 +310,10 @@ public class XmppConnection implements Runnable {
startXmpp();
} else {
final Bundle result = DNSHelper.getSRVRecord(account.getServer(), mXmppConnectionService);
final ArrayList<Parcelable>values = result.getParcelableArrayList("values");
for(Iterator<Parcelable> iterator = values.iterator(); iterator.hasNext();) {
final ArrayList<Parcelable> values = result.getParcelableArrayList("values");
for (Iterator<Parcelable> iterator = values.iterator(); iterator.hasNext(); ) {
if (Thread.currentThread().isInterrupted()) {
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": Thread was interrupted");
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": Thread was interrupted");
return;
}
final Bundle namePort = (Bundle) iterator.next();
@ -367,10 +367,10 @@ public class XmppConnection implements Runnable {
if (startXmpp())
break; // successfully connected to server that speaks xmpp
} catch(final SecurityException e) {
} catch (final SecurityException e) {
throw e;
} catch (final Throwable e) {
Log.d(Config.LOGTAG, account.getJid().toBareJid().toString() + ": " + e.getMessage() +"("+e.getClass().getName()+")");
Log.d(Config.LOGTAG, account.getJid().toBareJid().toString() + ": " + e.getMessage() + "(" + e.getClass().getName() + ")");
if (!iterator.hasNext()) {
throw new UnknownHostException();
}
@ -378,6 +378,8 @@ public class XmppConnection implements Runnable {
}
}
processStream();
} catch (final java.lang.SecurityException e) {
this.changeStatus(Account.State.MISSING_INTERNET_PERMISSION);
} catch (final IncompatibleServerException e) {
this.changeStatus(Account.State.INCOMPATIBLE_SERVER);
} catch (final SecurityException e) {

View file

@ -675,4 +675,5 @@
<string name="type_web">Web browser</string>
<string name="type_console">Console</string>
<string name="payment_required">Payment required</string>
<string name="missing_internet_permission">Missing internet permission</string>
</resources>