gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-exchange] branch master updated: fix fakebank account vs. full pa


From: gnunet
Subject: [taler-exchange] branch master updated: fix fakebank account vs. full payto confusion
Date: Wed, 15 Jan 2020 11:48:52 +0100

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new 4547bfb3 fix fakebank account vs. full payto confusion
4547bfb3 is described below

commit 4547bfb318bfad96b12694dd93a50f50717478b6
Author: Christian Grothoff <address@hidden>
AuthorDate: Wed Jan 15 11:48:41 2020 +0100

    fix fakebank account vs. full payto confusion
---
 src/bank-lib/fakebank.c              | 66 ++++++++++++------------------------
 src/include/taler_util.h             | 11 ++++++
 src/lib/testing_api_cmd_bank_check.c |  7 ++--
 src/util/test_payto.c                |  8 +++++
 src/util/util.c                      | 31 +++++++++++++++++
 5 files changed, 76 insertions(+), 47 deletions(-)

diff --git a/src/bank-lib/fakebank.c b/src/bank-lib/fakebank.c
index b12b0437..8f030687 100644
--- a/src/bank-lib/fakebank.c
+++ b/src/bank-lib/fakebank.c
@@ -54,12 +54,12 @@ struct Transaction
   struct TALER_Amount amount;
 
   /**
-   * Account to debit.
+   * Account to debit (string, not payto!)
    */
   char *debit_account;
 
   /**
-   * Account to credit.
+   * Account to credit (string, not payto!)
    */
   char *credit_account;
 
@@ -197,27 +197,6 @@ struct TALER_FAKEBANK_Handle
 };
 
 
-/**
- * Return account string from an x-taler-bank payto:// URL.
- *
- * @param  payto:// URL of method x-taler-bank
- * @return account_name the account name
- */
-char *
-get_xtalerbank_payto_account (const char *payto_url)
-{
-  const char *beg;
-
-  GNUNET_assert (0 == strncasecmp (payto_url,
-                                   "payto://x-taler-bank/",
-                                   strlen ("payto://x-taler-bank/")));
-  beg = strchr (&payto_url[strlen ("payto://x-taler-bank/")],
-                '/');
-  GNUNET_assert (NULL != beg);
-  return GNUNET_strdup (&beg[1]);
-}
-
-
 /**
  * Generate log messages for failed check operation.
  *
@@ -346,8 +325,8 @@ TALER_FAKEBANK_check_credit (struct TALER_FAKEBANK_Handle 
*h,
  * Tell the fakebank to create another wire transfer.
  *
  * @param h fake bank handle
- * @param debit_account account to debit
- * @param credit_account account to credit
+ * @param debit_account account to debit, not payto://!
+ * @param credit_account account to credit, not payto://!
  * @param amount amount to transfer
  * @param subject wire transfer subject to use
  * @param exchange_base_url exchange URL
@@ -366,6 +345,12 @@ TALER_FAKEBANK_make_transfer (struct TALER_FAKEBANK_Handle 
*h,
 {
   struct Transaction *t;
 
+  GNUNET_break (0 != strncasecmp ("payto://",
+                                  debit_account,
+                                  strlen ("payto://")));
+  GNUNET_break (0 != strncasecmp ("payto://",
+                                  credit_account,
+                                  strlen ("payto://")));
   if (NULL != request_uid)
   {
     for (struct Transaction *t = h->transactions_head; NULL != t; t = t->next)
@@ -431,6 +416,12 @@ TALER_FAKEBANK_make_admin_transfer (struct 
TALER_FAKEBANK_Handle *h,
 {
   struct Transaction *t;
 
+  GNUNET_break (0 != strncasecmp ("payto://",
+                                  debit_account,
+                                  strlen ("payto://")));
+  GNUNET_break (0 != strncasecmp ("payto://",
+                                  credit_account,
+                                  strlen ("payto://")));
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Making transfer from %s to %s over %s and subject %s\n",
               debit_account,
@@ -616,7 +607,7 @@ handle_admin_add_incoming (struct TALER_FAKEBANK_Handle *h,
       json_decref (json);
       return MHD_NO;
     }
-    debit = get_xtalerbank_payto_account (debit_account);
+    debit = TALER_xtalerbank_account_from_payto (debit_account);
     row_id = TALER_FAKEBANK_make_admin_transfer (h,
                                                  debit,
                                                  account,
@@ -692,6 +683,7 @@ handle_transfer (struct TALER_FAKEBANK_Handle *h,
     struct GNUNET_HashCode uuid;
     struct TALER_WireTransferIdentifierRawP wtid;
     const char *credit_account;
+    char *credit;
     const char *base_url;
     struct TALER_Amount amount;
     struct GNUNET_JSON_Specification spec[] = {
@@ -718,9 +710,10 @@ handle_transfer (struct TALER_FAKEBANK_Handle *h,
       return MHD_NO;
     }
     {
+      credit = TALER_xtalerbank_account_from_payto (credit_account);
       row_id = TALER_FAKEBANK_make_transfer (h,
                                              account,
-                                             credit_account,
+                                             credit,
                                              &amount,
                                              &wtid,
                                              base_url,
@@ -728,10 +721,11 @@ handle_transfer (struct TALER_FAKEBANK_Handle *h,
       GNUNET_log (GNUNET_ERROR_TYPE_INFO,
                   "Receiving incoming wire transfer: %s->%s, subject: %s, 
amount: %s, from %s\n",
                   account,
-                  credit_account,
+                  credit,
                   TALER_B2S (&wtid),
                   TALER_amount2s (&amount),
                   base_url);
+      GNUNET_free (credit);
     }
   }
   json_decref (json);
@@ -972,14 +966,6 @@ handle_debit_history (struct TALER_FAKEBANK_Handle *h,
       else
         ha.delta++;
     }
-    else
-    {
-      fprintf (stderr,
-               "Skipping transaction %s->%s: only care about %s\n",
-               pos->debit_account,
-               pos->credit_account,
-               account);
-    }
     if (ha.delta > 0)
       pos = pos->prev;
     else
@@ -1088,14 +1074,6 @@ handle_credit_history (struct TALER_FAKEBANK_Handle *h,
       else
         ha.delta++;
     }
-    else
-    {
-      fprintf (stderr,
-               "Skipping transaction %s->%s: only care about %s\n",
-               pos->debit_account,
-               pos->credit_account,
-               account);
-    }
     if (ha.delta > 0)
       pos = pos->prev;
     else
diff --git a/src/include/taler_util.h b/src/include/taler_util.h
index da501794..0f4eaab6 100644
--- a/src/include/taler_util.h
+++ b/src/include/taler_util.h
@@ -280,4 +280,15 @@ char *
 TALER_xtalerbank_account_url_from_payto (const char *payto);
 
 
+/**
+ * Obtain the account name from a payto URL.
+ *
+ * @param payto an x-taler-bank payto URL
+ * @return only the account name from the @a payto URL, NULL if not an 
x-taler-bank
+ *   payto URL
+ */
+char *
+TALER_xtalerbank_account_from_payto (const char *payto);
+
+
 #endif
diff --git a/src/lib/testing_api_cmd_bank_check.c 
b/src/lib/testing_api_cmd_bank_check.c
index a7c4341c..e443833a 100644
--- a/src/lib/testing_api_cmd_bank_check.c
+++ b/src/lib/testing_api_cmd_bank_check.c
@@ -129,9 +129,10 @@ check_bank_transfer_run (void *cls,
     if (NULL == deposit_cmd)
       TALER_TESTING_FAIL (is);
 
-    GNUNET_assert
-      (GNUNET_OK == TALER_TESTING_get_trait_amount_obj
-        (deposit_cmd, 0, &amount_ptr));
+    GNUNET_assert (GNUNET_OK ==
+                   TALER_TESTING_get_trait_amount_obj (deposit_cmd,
+                                                       0,
+                                                       &amount_ptr));
     amount = *amount_ptr;
 
     GNUNET_assert
diff --git a/src/util/test_payto.c b/src/util/test_payto.c
index 0a570ee5..f0247f19 100644
--- a/src/util/test_payto.c
+++ b/src/util/test_payto.c
@@ -78,6 +78,14 @@ main (int argc,
     "payto://x-taler-bank/localhost:1080/alice");
   CHECK ("http://localhost:1080/alice";,
          r);
+  r = TALER_xtalerbank_account_from_payto (
+    "payto://x-taler-bank/localhost:1080/alice");
+  CHECK ("alice",
+         r);
+  r = TALER_xtalerbank_account_from_payto (
+    "payto://x-taler-bank/localhost:1080/alice?subject=hello&amount=EUR:1");
+  CHECK ("alice",
+         r);
   return 0;
 }
 
diff --git a/src/util/util.c b/src/util/util.c
index 531bd27f..7f5e60e4 100644
--- a/src/util/util.c
+++ b/src/util/util.c
@@ -710,4 +710,35 @@ TALER_xtalerbank_account_url_from_payto (const char *payto)
 }
 
 
+/**
+ * Obtain the account name from a payto URL.
+ *
+ * @param payto an x-taler-bank payto URL
+ * @return only the account name from the @a payto URL, NULL if not an 
x-taler-bank
+ *   payto URL
+ */
+char *
+TALER_xtalerbank_account_from_payto (const char *payto)
+{
+  const char *beg;
+  const char *end;
+
+  if (0 != strncasecmp (payto,
+                        "payto://x-taler-bank/",
+                        strlen ("payto://x-taler-bank/")))
+    return NULL;
+  beg = strchr (&payto[strlen ("payto://x-taler-bank/")],
+                '/');
+  if (NULL == beg)
+    return NULL;
+  beg++;
+  end = strchr (beg,
+                '?');
+  if (NULL == end)
+    return GNUNET_strdup (beg);
+  return GNUNET_strndup (beg,
+                         end - beg);
+}
+
+
 /* end of util.c */

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]