aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2022-12-29 00:34:36 +0100
committerChristian Grothoff <christian@grothoff.org>2022-12-29 00:34:36 +0100
commit5df74558de6e725841c2f5a2ea6f90d0af264c89 (patch)
tree10d88f1e38abc7281d9c9f8141fe646e0374e691
parent880c14909bfdaf1199ffc5da989eccb52f6cac12 (diff)
downloadexchange-5df74558de6e725841c2f5a2ea6f90d0af264c89.tar.xz
misc purse deletion fixes
-rw-r--r--src/exchange/taler-exchange-httpd_purses_delete.c1
-rw-r--r--src/exchangedb/exchange_do_purse_delete.sql (renamed from src/exchangedb/exchange_do_delete_purse.sql)8
-rw-r--r--src/exchangedb/procedures.sql.in2
-rw-r--r--src/lib/exchange_api_purse_delete.c4
-rw-r--r--src/testing/test_exchange_p2p.c13
5 files changed, 23 insertions, 5 deletions
diff --git a/src/exchange/taler-exchange-httpd_purses_delete.c b/src/exchange/taler-exchange-httpd_purses_delete.c
index 58cc78250..d4b74b161 100644
--- a/src/exchange/taler-exchange-httpd_purses_delete.c
+++ b/src/exchange/taler-exchange-httpd_purses_delete.c
@@ -127,6 +127,7 @@ TEH_handler_purses_delete (
}
if (decided)
{
+ GNUNET_break_op (0);
return TALER_MHD_reply_with_ec (
connection,
TALER_EC_EXCHANGE_PURSE_DELETE_ALREADY_DECIDED,
diff --git a/src/exchangedb/exchange_do_delete_purse.sql b/src/exchangedb/exchange_do_purse_delete.sql
index a57f25454..096475b43 100644
--- a/src/exchangedb/exchange_do_delete_purse.sql
+++ b/src/exchangedb/exchange_do_purse_delete.sql
@@ -14,7 +14,7 @@
-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--
-CREATE OR REPLACE FUNCTION exchange_do_delete_purse(
+CREATE OR REPLACE FUNCTION exchange_do_purse_delete(
IN in_purse_pub BYTEA,
IN in_purse_sig BYTEA,
IN in_now INT8,
@@ -28,7 +28,7 @@ DECLARE
my_in_reserve_quota BOOLEAN;
BEGIN
-SELECT COUNT(*) FROM purse_decision
+PERFORM refunded FROM purse_decision
WHERE purse_pub=in_purse_pub;
IF FOUND
THEN
@@ -49,7 +49,7 @@ THEN
END IF;
-- store reserve deletion
-INSERT INTO purse_deletion
+INSERT INTO exchange.purse_deletion
(purse_pub
,purse_sig)
VALUES
@@ -115,5 +115,5 @@ END LOOP;
END $$;
-COMMENT ON FUNCTION exchange_do_delete_purse(BYTEA,BYTEA,INT8)
+COMMENT ON FUNCTION exchange_do_purse_delete(BYTEA,BYTEA,INT8)
IS 'Delete a previously undecided purse and refund the coins (if any).';
diff --git a/src/exchangedb/procedures.sql.in b/src/exchangedb/procedures.sql.in
index af47bbf63..194830248 100644
--- a/src/exchangedb/procedures.sql.in
+++ b/src/exchangedb/procedures.sql.in
@@ -28,11 +28,11 @@ SET search_path TO exchange;
#include "exchange_do_recoup_to_reserve.sql"
#include "exchange_do_recoup_to_coin.sql"
#include "exchange_do_gc.sql"
+#include "exchange_do_purse_delete.sql"
#include "exchange_do_purse_deposit.sql"
#include "exchange_do_purse_merge.sql"
#include "exchange_do_reserve_purse.sql"
#include "exchange_do_expire_purse.sql"
-#include "exchange_do_delete_purse.sql"
#include "exchange_do_history_request.sql"
#include "exchange_do_reserve_open_deposit.sql"
#include "exchange_do_reserve_open.sql"
diff --git a/src/lib/exchange_api_purse_delete.c b/src/lib/exchange_api_purse_delete.c
index 68035b48b..27a9082b2 100644
--- a/src/lib/exchange_api_purse_delete.c
+++ b/src/lib/exchange_api_purse_delete.c
@@ -208,6 +208,10 @@ TALER_EXCHANGE_purse_delete (
GNUNET_free (xhdr);
}
eh = TALER_EXCHANGE_curl_easy_get_ (pdh->url);
+ GNUNET_assert (CURLE_OK ==
+ curl_easy_setopt (eh,
+ CURLOPT_CUSTOMREQUEST,
+ MHD_HTTP_METHOD_DELETE));
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"URL for purse delete: `%s'\n",
pdh->url);
diff --git a/src/testing/test_exchange_p2p.c b/src/testing/test_exchange_p2p.c
index f159b2f1b..ad95bf63c 100644
--- a/src/testing/test_exchange_p2p.c
+++ b/src/testing/test_exchange_p2p.c
@@ -159,6 +159,19 @@ run (void *cls,
};
struct TALER_TESTING_Command push[] = {
TALER_TESTING_cmd_purse_create_with_deposit (
+ "purse-with-deposit-for-delete",
+ MHD_HTTP_OK,
+ "{\"amount\":\"EUR:1\",\"summary\":\"ice cream\"}",
+ true, /* upload contract */
+ GNUNET_TIME_UNIT_MINUTES, /* expiration */
+ "withdraw-coin-1",
+ "EUR:1.01",
+ NULL),
+ TALER_TESTING_cmd_purse_delete (
+ "purse-with-deposit-delete",
+ MHD_HTTP_NO_CONTENT,
+ "purse-with-deposit-for-delete"),
+ TALER_TESTING_cmd_purse_create_with_deposit (
"purse-with-deposit",
MHD_HTTP_OK,
"{\"amount\":\"EUR:1\",\"summary\":\"ice cream\"}",