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

View File

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

View File

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