/* This file is part of TALER (C) 2016-2023 Taler Systems SA TALER is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. TALER is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with TALER; see the file COPYING. If not, see */ /** * @file bank-lib/fakebank_bank_post_withdrawals_abort.c * @brief implement bank API withdrawals /abort endpoint * @author Christian Grothoff */ #include "platform.h" #include #include "taler_fakebank_lib.h" #include "taler_bank_service.h" #include "taler_mhd_lib.h" #include #include "fakebank.h" #include "fakebank_bank_post_withdrawals_abort.h" #include "fakebank_common_lookup.h" #include "fakebank_common_lp.h" MHD_RESULT TALER_FAKEBANK_bank_withdrawals_abort_ ( struct TALER_FAKEBANK_Handle *h, struct MHD_Connection *connection, const char *withdrawal_id) { struct WithdrawalOperation *wo; GNUNET_assert (0 == pthread_mutex_lock (&h->big_lock)); wo = TALER_FAKEBANK_lookup_withdrawal_operation_ (h, withdrawal_id); if (NULL == wo) { GNUNET_assert (0 == pthread_mutex_unlock (&h->big_lock)); return TALER_MHD_reply_with_error (connection, MHD_HTTP_NOT_FOUND, TALER_EC_BANK_TRANSACTION_NOT_FOUND, withdrawal_id); } if (wo->confirmation_done) { GNUNET_assert (0 == pthread_mutex_unlock (&h->big_lock)); return TALER_MHD_reply_with_error (connection, MHD_HTTP_CONFLICT, TALER_EC_BANK_ABORT_CONFIRM_CONFLICT, withdrawal_id); } wo->aborted = true; TALER_FAKEBANK_notify_withdrawal_ (h, wo); GNUNET_assert (0 == pthread_mutex_unlock (&h->big_lock)); return TALER_MHD_reply_json (connection, json_object (), /* FIXME: #7301 */ MHD_HTTP_OK); }