From 975d9c9d15e5b6694639e55c7d73d4d86fc48cab Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Tue, 21 Jan 2020 16:13:22 +0100 Subject: make sure request_uid is actually unique Allowing duplicate request_uid for different transfer details means that somebody might eventually rely on this, which is bad. They should really be unique, it makes tracing easier. --- src/include/taler_error_codes.h | 6 ++++++ src/include/taler_fakebank_lib.h | 9 ++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) (limited to 'src/include') diff --git a/src/include/taler_error_codes.h b/src/include/taler_error_codes.h index 3833e7a4e..ac7f92888 100644 --- a/src/include/taler_error_codes.h +++ b/src/include/taler_error_codes.h @@ -1735,6 +1735,12 @@ enum TALER_ErrorCode */ TALER_EC_BANK_SOFT_EXCEPTION = 5400, + /** + * The request UID for a request to transfer funds has already been + * used, but with different details for the transfer. + */ + TALER_EC_BANK_TRANSFER_REQUEST_UID_REUSED = 5500, + /** * The sync service failed to access its database. This response is * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. diff --git a/src/include/taler_fakebank_lib.h b/src/include/taler_fakebank_lib.h index 278d0a00d..9324bdce1 100644 --- a/src/include/taler_fakebank_lib.h +++ b/src/include/taler_fakebank_lib.h @@ -73,9 +73,11 @@ TALER_FAKEBANK_check_empty (struct TALER_FAKEBANK_Handle *h); * @param subject wire transfer subject to use * @param exchange_base_url exchange URL * @param request_uid unique number to make the request unique, or NULL to create one - * @return serial_id of the transfer + * @param[out] ret_row_id pointer to store the row ID of this transaction + * @return GNUNET_YES if the transfer was successful, + * GNUNET_SYSERR if the request_uid was reused for a different transfer */ -uint64_t +int TALER_FAKEBANK_make_transfer (struct TALER_FAKEBANK_Handle *h, const char *debit_account, const char *credit_account, @@ -83,7 +85,8 @@ TALER_FAKEBANK_make_transfer (struct TALER_FAKEBANK_Handle *h, const struct TALER_WireTransferIdentifierRawP *subject, const char *exchange_base_url, - const struct GNUNET_HashCode *request_uid); + const struct GNUNET_HashCode *request_uid, + uint64_t *ret_row_id); /** -- cgit v1.2.3