From 7666b210e4ddf1001ff90ee7d6d2c528bc8c6316 Mon Sep 17 00:00:00 2001 From: goapunk <noobie@goapunks.net> Date: Wed, 14 Dec 2016 13:35:59 +0100 Subject: [PATCH] Ignore results from the QrScanner if task is not ready * Ignore results until the KeyAgreementTask is ready and returned the local payload Signed-off-by: goapunk <noobie@goapunks.net> --- .../briar/android/keyagreement/ShowQrCodeFragment.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ShowQrCodeFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ShowQrCodeFragment.java index f20bb4d78c..29a249d60e 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ShowQrCodeFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ShowQrCodeFragment.java @@ -86,6 +86,7 @@ public class ShowQrCodeFragment extends BaseEventFragment private BluetoothStateReceiver receiver; private boolean gotRemotePayload, waitingForBluetooth; + private volatile boolean gotLocalPayload; private KeyAgreementTask task; public static ShowQrCodeFragment newInstance() { @@ -202,6 +203,7 @@ public class ShowQrCodeFragment extends BaseEventFragment statusView.setVisibility(INVISIBLE); cameraView.setVisibility(VISIBLE); gotRemotePayload = false; + gotLocalPayload = false; startListening(); } @@ -227,6 +229,7 @@ public class ShowQrCodeFragment extends BaseEventFragment public void eventOccurred(Event e) { if (e instanceof KeyAgreementListeningEvent) { KeyAgreementListeningEvent event = (KeyAgreementListeningEvent) e; + gotLocalPayload = true; setQrCode(event.getLocalPayload()); } else if (e instanceof KeyAgreementFailedEvent) { keyAgreementFailed(); @@ -341,6 +344,10 @@ public class ShowQrCodeFragment extends BaseEventFragment @Override public void run() { LOG.info("Got result from decoder"); + // Ignore results until the KeyAgreementTask is ready + if (!gotLocalPayload) { + return; + } if (!gotRemotePayload) { gotRemotePayload = true; qrCodeScanned(result.getText()); -- GitLab