aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2017-11-20 21:55:24 +0100
committerChristian Grothoff <christian@grothoff.org>2017-11-20 21:55:24 +0100
commit7749a683ba602cf13ed160c6ed63d668adbf4b1c (patch)
treecba999e1f9bd2c8ccd445a2a5202e61c01f2a7cd /src
parent11269125fa994d412c2afa38314ea21b43222266 (diff)
fix issue in wire auditor's history processing
Diffstat (limited to 'src')
-rw-r--r--src/auditor/taler-wire-auditor.c45
-rw-r--r--src/wire/plugin_wire_test.c3
2 files changed, 31 insertions, 17 deletions
diff --git a/src/auditor/taler-wire-auditor.c b/src/auditor/taler-wire-auditor.c
index 9f16794d2..1b514a0ef 100644
--- a/src/auditor/taler-wire-auditor.c
+++ b/src/auditor/taler-wire-auditor.c
@@ -874,7 +874,7 @@ history_debit_cb (void *cls,
"wire_offset_hash", GNUNET_JSON_from_data_auto (&rowh),
"diagnostic", diagnostic));
GNUNET_free (diagnostic);
- return GNUNET_SYSERR;
+ return GNUNET_OK;
}
roi = GNUNET_new (struct ReserveOutInfo);
GNUNET_CRYPTO_hash (&details->wtid,
@@ -908,14 +908,14 @@ history_debit_cb (void *cls,
"wire_offset_hash", GNUNET_JSON_from_data_auto (&rowh),
"diagnostic", diagnostic));
GNUNET_free (diagnostic);
- return GNUNET_SYSERR;
+ return GNUNET_OK;
}
return GNUNET_OK;
}
/**
- * Main functin for processing 'reserves_out' data.
+ * Main function for processing 'reserves_out' data.
* We start by going over the DEBIT transactions this
* time, and then verify that all of them are justified
* by 'reserves_out'.
@@ -1044,6 +1044,27 @@ complain_in_not_found (void *cls,
/**
+ * Conclude the credit history check by logging entries that
+ * were not found and freeing resources. Then move on to
+ * processing debits.
+ */
+static void
+conclude_credit_history ()
+{
+ GNUNET_CONTAINER_multihashmap_iterate (in_map,
+ &complain_in_not_found,
+ NULL);
+ /* clean up before 2nd phase */
+ GNUNET_CONTAINER_multihashmap_iterate (in_map,
+ &free_rii,
+ NULL);
+ GNUNET_CONTAINER_multihashmap_destroy (in_map);
+ in_map = NULL;
+ process_debits ();
+}
+
+
+/**
* This function is called for all transactions that
* are credited to the exchange's account (incoming
* transactions).
@@ -1069,17 +1090,8 @@ history_credit_cb (void *cls,
{
/* end of operation */
hh = NULL;
- GNUNET_CONTAINER_multihashmap_iterate (in_map,
- &complain_in_not_found,
- NULL);
- /* clean up before 2nd phase */
- GNUNET_CONTAINER_multihashmap_iterate (in_map,
- &free_rii,
- NULL);
- GNUNET_CONTAINER_multihashmap_destroy (in_map);
- in_map = NULL;
- process_debits ();
- return GNUNET_SYSERR;
+ conclude_credit_history ();
+ return GNUNET_OK;
}
GNUNET_CRYPTO_hash (row_off,
row_off_size,
@@ -1091,7 +1103,9 @@ history_credit_cb (void *cls,
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Failed to find wire transfer at `%s' in exchange database. Audit ends at this point in time.\n",
GNUNET_STRINGS_absolute_time_to_string (details->execution_date));
- return GNUNET_SYSERR;
+ hh = NULL;
+ conclude_credit_history ();
+ return GNUNET_SYSERR; /* not an error, just end of processing */
}
/* Update offset */
@@ -1105,6 +1119,7 @@ history_credit_cb (void *cls,
GNUNET_break (0);
commit (GNUNET_DB_STATUS_HARD_ERROR);
GNUNET_SCHEDULER_shutdown ();
+ hh = NULL;
return GNUNET_SYSERR;
}
memcpy (in_wire_off,
diff --git a/src/wire/plugin_wire_test.c b/src/wire/plugin_wire_test.c
index e9d5ad085..1a7443b8a 100644
--- a/src/wire/plugin_wire_test.c
+++ b/src/wire/plugin_wire_test.c
@@ -872,7 +872,6 @@ bhist_cb (void *cls,
NULL,
0,
NULL);
- whh->hh = NULL;
GNUNET_free (whh);
break;
default:
@@ -885,7 +884,6 @@ bhist_cb (void *cls,
NULL,
0,
NULL);
- whh->hh = NULL;
GNUNET_free (whh);
break;
}
@@ -970,6 +968,7 @@ test_get_history (void *cls,
GNUNET_free (whh);
return NULL;
}
+
return whh;
}