fix issue in wire auditor's history processing

This commit is contained in:
Christian Grothoff 2017-11-20 21:55:24 +01:00
parent 11269125fa
commit 7749a683ba
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
2 changed files with 31 additions and 17 deletions

View File

@ -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'.
@ -1043,6 +1043,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
@ -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,

View File

@ -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;
}