commit 4b62f02405a2315bd38967a08eaa4642d0ddc44c
parent 6f809f45ff8ffb9a14aec80cdcd5c7902c28e7a8
Author: Christian Grothoff <christian@grothoff.org>
Date: Sat, 9 Nov 2019 16:18:27 +0100
cleanup
Diffstat:
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/src/main.c b/src/main.c
@@ -96,6 +96,8 @@ struct PaymentActivity
struct GNUNET_SCHEDULER_Task *delay_task;
+ int nfc_has_target;
+
int wallet_has_uri;
};
@@ -175,11 +177,10 @@ cleanup_payment (struct PaymentActivity *pa)
GNUNET_SCHEDULER_cancel (pa->task);
if (NULL != pa->delay_task)
GNUNET_SCHEDULER_cancel (pa->delay_task);
- if (NULL != pa->pnd)
- {
+ if (GNUNET_YES == pa->nfc_has_target)
nfc_initiator_deselect_target (pa->pnd); // needed?
+ if (NULL != pa->pnd)
nfc_close (pa->pnd);
- }
GNUNET_free_non_null (pa->taler_pay_uri);
GNUNET_free_non_null (pa->order_id);
GNUNET_free (pa);
@@ -256,7 +257,6 @@ wallet_transmit_uri (void *cls)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Failed to send command\n");
- nfc_initiator_deselect_target (pa->pnd);
pa->task = GNUNET_SCHEDULER_add_delayed (NFC_FAILURE_RETRY_FREQ,
&connect_target,
pa);
@@ -270,7 +270,6 @@ wallet_transmit_uri (void *cls)
"'PUT DATA' command transmission failed, return code: %x%x\n",
response[0],
response[1]);
- nfc_initiator_deselect_target (pa->pnd);
pa->task = GNUNET_SCHEDULER_add_delayed (NFC_FAILURE_RETRY_FREQ,
&connect_target,
pa);
@@ -308,7 +307,6 @@ wallet_select_aid (void *cls)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Failed to transceive with NFC app, trying to find another NFC client in 1s\n");
- nfc_initiator_deselect_target (pa->pnd);
pa->task = GNUNET_SCHEDULER_add_delayed (NFC_FAILURE_RETRY_FREQ,
&connect_target,
pa);
@@ -328,7 +326,6 @@ wallet_select_aid (void *cls)
"AID selection failure, return code: %x%x, trying to find another NFC client in 1s\n",
response[0],
response[1]);
- nfc_initiator_deselect_target (pa->pnd);
pa->task = GNUNET_SCHEDULER_add_delayed (NFC_FAILURE_RETRY_FREQ,
&connect_target,
pa);
@@ -351,6 +348,11 @@ connect_target (void *cls)
} };
pa->task = NULL;
+ if (GNUNET_YES == pa->nfc_has_target)
+ {
+ nfc_initiator_deselect_target (pa->pnd);
+ pa->nfc_has_target = GNUNET_NO;
+ }
pa->nt.nti.nai.szUidLen = 0;
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Trying to find NFC client\n");
@@ -376,11 +378,11 @@ connect_target (void *cls)
{
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Found NFC client\n");
+ pa->nfc_has_target = GNUNET_YES;
pa->task = GNUNET_SCHEDULER_add_now (&wallet_select_aid,
pa);
return;
}
- nfc_initiator_deselect_target (pa->pnd);
pa->task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS,
&connect_target,
pa);