LCOV - code coverage report
Current view: top level - exchangedb - plugin_exchangedb_common.c (source / functions) Coverage Total Hit
Test: coverage.info Lines: 43.7 % 87 38
Test Date: 2025-12-22 22:38:17 Functions: 100.0 % 2 2

            Line data    Source code
       1              : /*
       2              :   This file is part of TALER
       3              :   Copyright (C) 2015, 2016, 2020, 2024 Taler Systems SA
       4              : 
       5              :   TALER is free software; you can redistribute it and/or modify it under the
       6              :   terms of the GNU General Public License as published by the Free Software
       7              :   Foundation; either version 3, or (at your option) any later version.
       8              : 
       9              :   TALER is distributed in the hope that it will be useful, but WITHOUT ANY
      10              :   WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
      11              :   A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
      12              : 
      13              :   You should have received a copy of the GNU General Public License along with
      14              :   TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
      15              : */
      16              : /**
      17              :  * @file exchangedb/plugin_exchangedb_common.c
      18              :  * @brief Functions shared across plugins, this file is meant to be
      19              :  *        included in each plugin.
      20              :  * @author Christian Grothoff
      21              :  */
      22              : #include "taler/platform.h"
      23              : #include "plugin_exchangedb_common.h"
      24              : 
      25              : 
      26              : void
      27            8 : TEH_COMMON_free_reserve_history (
      28              :   void *cls,
      29              :   struct TALER_EXCHANGEDB_ReserveHistory *rh)
      30              : {
      31              :   (void) cls;
      32           31 :   while (NULL != rh)
      33              :   {
      34           23 :     switch (rh->type)
      35              :     {
      36            8 :     case TALER_EXCHANGEDB_RO_BANK_TO_EXCHANGE:
      37              :       {
      38              :         struct TALER_EXCHANGEDB_BankTransfer *bt;
      39              : 
      40            8 :         bt = rh->details.bank;
      41            8 :         GNUNET_free (bt->sender_account_details.full_payto);
      42            8 :         GNUNET_free (bt);
      43            8 :         break;
      44              :       }
      45            7 :     case TALER_EXCHANGEDB_RO_WITHDRAW_COINS:
      46              :       {
      47              :         struct TALER_EXCHANGEDB_Withdraw *wd;
      48            7 :         wd = rh->details.withdraw;
      49            7 :         GNUNET_free (wd->denom_pub_hashes);
      50            7 :         GNUNET_free (wd);
      51            7 :         break;
      52              :       }
      53            0 :     case TALER_EXCHANGEDB_RO_RECOUP_COIN:
      54              :       {
      55              :         struct TALER_EXCHANGEDB_Recoup *recoup;
      56              : 
      57            0 :         recoup = rh->details.recoup;
      58            0 :         TALER_denom_sig_free (&recoup->coin.denom_sig);
      59            0 :         GNUNET_free (recoup);
      60            0 :         break;
      61              :       }
      62            0 :     case TALER_EXCHANGEDB_RO_EXCHANGE_TO_BANK:
      63              :       {
      64              :         struct TALER_EXCHANGEDB_ClosingTransfer *closing;
      65              : 
      66            0 :         closing = rh->details.closing;
      67            0 :         GNUNET_free (closing->receiver_account_details.full_payto);
      68            0 :         GNUNET_free (closing);
      69            0 :         break;
      70              :       }
      71            8 :     case TALER_EXCHANGEDB_RO_PURSE_MERGE:
      72              :       {
      73              :         struct TALER_EXCHANGEDB_PurseMerge *merge;
      74              : 
      75            8 :         merge = rh->details.merge;
      76            8 :         GNUNET_free (merge);
      77            8 :         break;
      78              :       }
      79            0 :     case TALER_EXCHANGEDB_RO_HISTORY_REQUEST:
      80              :       {
      81              :         struct TALER_EXCHANGEDB_HistoryRequest *history;
      82              : 
      83            0 :         history = rh->details.history;
      84            0 :         GNUNET_free (history);
      85            0 :         break;
      86              :       }
      87            0 :     case TALER_EXCHANGEDB_RO_OPEN_REQUEST:
      88              :       {
      89              :         struct TALER_EXCHANGEDB_OpenRequest *or;
      90              : 
      91            0 :         or = rh->details.open_request;
      92            0 :         GNUNET_free (or);
      93            0 :         break;
      94              :       }
      95            0 :     case TALER_EXCHANGEDB_RO_CLOSE_REQUEST:
      96              :       {
      97              :         struct TALER_EXCHANGEDB_CloseRequest *cr;
      98              : 
      99            0 :         cr = rh->details.close_request;
     100            0 :         GNUNET_free (cr);
     101            0 :         break;
     102              :       }
     103              :     }
     104              :     {
     105              :       struct TALER_EXCHANGEDB_ReserveHistory *next;
     106              : 
     107           23 :       next = rh->next;
     108           23 :       GNUNET_free (rh);
     109           23 :       rh = next;
     110              :     }
     111              :   }
     112            8 : }
     113              : 
     114              : 
     115              : void
     116            4 : TEH_COMMON_free_coin_transaction_list (
     117              :   void *cls,
     118              :   struct TALER_EXCHANGEDB_TransactionList *tl)
     119              : {
     120              :   (void) cls;
     121            9 :   while (NULL != tl)
     122              :   {
     123            5 :     switch (tl->type)
     124              :     {
     125            2 :     case TALER_EXCHANGEDB_TT_DEPOSIT:
     126              :       {
     127              :         struct TALER_EXCHANGEDB_DepositListEntry *deposit;
     128              : 
     129            2 :         deposit = tl->details.deposit;
     130            2 :         GNUNET_free (deposit->receiver_wire_account.full_payto);
     131            2 :         GNUNET_free (deposit);
     132            2 :         break;
     133              :       }
     134            0 :     case TALER_EXCHANGEDB_TT_MELT:
     135            0 :       GNUNET_free (tl->details.melt);
     136            0 :       break;
     137            0 :     case TALER_EXCHANGEDB_TT_RECOUP_REFRESH_RECEIVER:
     138              :       {
     139              :         struct TALER_EXCHANGEDB_RecoupRefreshListEntry *rr;
     140              : 
     141            0 :         rr = tl->details.old_coin_recoup;
     142            0 :         TALER_denom_sig_free (&rr->coin.denom_sig);
     143            0 :         GNUNET_free (rr);
     144            0 :         break;
     145              :       }
     146            0 :     case TALER_EXCHANGEDB_TT_REFUND:
     147            0 :       GNUNET_free (tl->details.refund);
     148            0 :       break;
     149            0 :     case TALER_EXCHANGEDB_TT_RECOUP_WITHDRAW:
     150            0 :       GNUNET_free (tl->details.recoup);
     151            0 :       break;
     152            0 :     case TALER_EXCHANGEDB_TT_RECOUP_REFRESH:
     153              :       {
     154              :         struct TALER_EXCHANGEDB_RecoupRefreshListEntry *rr;
     155              : 
     156            0 :         rr = tl->details.recoup_refresh;
     157            0 :         TALER_denom_sig_free (&rr->coin.denom_sig);
     158            0 :         GNUNET_free (rr);
     159            0 :         break;
     160              :       }
     161            3 :     case TALER_EXCHANGEDB_TT_PURSE_DEPOSIT:
     162              :       {
     163              :         struct TALER_EXCHANGEDB_PurseDepositListEntry *deposit;
     164              : 
     165            3 :         deposit = tl->details.purse_deposit;
     166            3 :         GNUNET_free (deposit->exchange_base_url);
     167            3 :         GNUNET_free (deposit);
     168            3 :         break;
     169              :       }
     170            0 :     case TALER_EXCHANGEDB_TT_PURSE_REFUND:
     171              :       {
     172              :         struct TALER_EXCHANGEDB_PurseRefundListEntry *prefund;
     173              : 
     174            0 :         prefund = tl->details.purse_refund;
     175            0 :         GNUNET_free (prefund);
     176            0 :         break;
     177              :       }
     178            0 :     case TALER_EXCHANGEDB_TT_RESERVE_OPEN:
     179              :       {
     180              :         struct TALER_EXCHANGEDB_ReserveOpenListEntry *role;
     181              : 
     182            0 :         role = tl->details.reserve_open;
     183            0 :         GNUNET_free (role);
     184            0 :         break;
     185              :       }
     186              :     }
     187              :     {
     188              :       struct TALER_EXCHANGEDB_TransactionList *next;
     189              : 
     190            5 :       next = tl->next;
     191            5 :       GNUNET_free (tl);
     192            5 :       tl = next;
     193              :     }
     194              :   }
     195            4 : }
     196              : 
     197              : 
     198              : /* end of plugin_exchangedb_common.c */
        

Generated by: LCOV version 2.0-1