gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] branch master updated: Call TEH_keys_update_state on ex


From: gnunet
Subject: [taler-exchange] branch master updated: Call TEH_keys_update_state on extension config change
Date: Sun, 20 Nov 2022 12:39:03 +0100

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

oec pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new 8250d830 Call TEH_keys_update_state on extension config change
8250d830 is described below

commit 8250d830b6facc3cd51ba9cecf109566ec346013
Author: Özgür Kesim <oec-taler@kesim.org>
AuthorDate: Sun Nov 20 12:36:54 2022 +0100

    Call TEH_keys_update_state on extension config change
    
    Fixes #7266
    
    Also better API:
     - TEH_keys_get_state and
     - TEH_keys_get_state_for_management_only
---
 src/exchange/taler-exchange-httpd_extensions.c       |  5 +++++
 src/exchange/taler-exchange-httpd_keys.c             | 20 +++++++++++++++-----
 src/exchange/taler-exchange-httpd_keys.h             | 12 +++---------
 .../taler-exchange-httpd_management_post_keys.c      |  3 +--
 4 files changed, 24 insertions(+), 16 deletions(-)

diff --git a/src/exchange/taler-exchange-httpd_extensions.c 
b/src/exchange/taler-exchange-httpd_extensions.c
index 30d1c5ac..c89a0041 100644
--- a/src/exchange/taler-exchange-httpd_extensions.c
+++ b/src/exchange/taler-exchange-httpd_extensions.c
@@ -20,6 +20,7 @@
 #include "platform.h"
 #include <gnunet/gnunet_json_lib.h>
 #include "taler_dbevents.h"
+#include "taler-exchange-httpd_keys.h"
 #include "taler-exchange-httpd_responses.h"
 #include "taler-exchange-httpd_extensions.h"
 #include "taler_json_lib.h"
@@ -156,6 +157,10 @@ extension_update_event_cb (void *cls,
                 TALER_age_mask_to_string (&conf->mask));
 
   }
+
+  // Finally, call TEH_keys_update_states in order to refresh the cached
+  // values.
+  TEH_keys_update_states ();
 }
 
 
diff --git a/src/exchange/taler-exchange-httpd_keys.c 
b/src/exchange/taler-exchange-httpd_keys.c
index edfe50e5..b37c68d9 100644
--- a/src/exchange/taler-exchange-httpd_keys.c
+++ b/src/exchange/taler-exchange-httpd_keys.c
@@ -2623,8 +2623,8 @@ TEH_keys_update_states ()
 }
 
 
-struct TEH_KeyStateHandle *
-TEH_keys_get_state2 (bool management_only)
+static struct TEH_KeyStateHandle *
+keys_get_state (bool management_only)
 {
   struct TEH_KeyStateHandle *old_ksh;
   struct TEH_KeyStateHandle *ksh;
@@ -2659,20 +2659,29 @@ TEH_keys_get_state2 (bool management_only)
 }
 
 
+struct TEH_KeyStateHandle *
+TEH_keys_get_state_for_management_only (void)
+{
+  return keys_get_state (true);
+}
+
+
 struct TEH_KeyStateHandle *
 TEH_keys_get_state (void)
 {
   struct TEH_KeyStateHandle *ksh;
 
-  ksh = TEH_keys_get_state2 (false);
+  ksh = keys_get_state (false);
   if (NULL == ksh)
     return NULL;
+
   if (ksh->management_only)
   {
     if (GNUNET_OK !=
         finish_keys_response (ksh))
       return NULL;
   }
+
   return ksh;
 }
 
@@ -2715,6 +2724,7 @@ TEH_keys_denomination_by_hash (
                                         NULL);
     return NULL;
   }
+
   return TEH_keys_denomination_by_hash2 (ksh,
                                          h_denom_pub,
                                          conn,
@@ -3410,7 +3420,7 @@ TEH_keys_get_timing (const struct 
TALER_ExchangePublicKeyP *exchange_pub,
   struct HelperSignkey *hsk;
   struct GNUNET_PeerIdentity pid;
 
-  ksh = TEH_keys_get_state2 (true);
+  ksh = TEH_keys_get_state_for_management_only ();
   if (NULL == ksh)
   {
     GNUNET_break (0);
@@ -3580,7 +3590,7 @@ TEH_keys_management_get_keys_handler (const struct 
TEH_RequestHandler *rh,
   json_t *reply;
 
   (void) rh;
-  ksh = TEH_keys_get_state2 (true);
+  ksh = TEH_keys_get_state_for_management_only ();
   if (NULL == ksh)
   {
     return TALER_MHD_reply_with_error (connection,
diff --git a/src/exchange/taler-exchange-httpd_keys.h 
b/src/exchange/taler-exchange-httpd_keys.h
index 7e8c1e99..8758afb7 100644
--- a/src/exchange/taler-exchange-httpd_keys.h
+++ b/src/exchange/taler-exchange-httpd_keys.h
@@ -168,18 +168,12 @@ TEH_check_invariants (void);
 struct TEH_KeyStateHandle *
 TEH_keys_get_state (void);
 
-
 /**
- * Obtain the key state. Should ONLY be used
- * directly if @a management_only is true. Otherwise use #TEH_keys_get_state().
- *
- * @param management_only if we should NOT run finish_keys_response()
- *                  because we only need the state for the /management/keys API
- * @return NULL on error
+ * Obtain the key state if we should NOT run finish_keys_response() because we
+ * only need the state for the /management/keys API
  */
 struct TEH_KeyStateHandle *
-TEH_keys_get_state2 (bool management_only);
-
+TEH_keys_get_state_for_management_only (void);
 
 /**
  * Something changed in the database. Rebuild all key states.  This function
diff --git a/src/exchange/taler-exchange-httpd_management_post_keys.c 
b/src/exchange/taler-exchange-httpd_management_post_keys.c
index 7d9853e9..df351ad5 100644
--- a/src/exchange/taler-exchange-httpd_management_post_keys.c
+++ b/src/exchange/taler-exchange-httpd_management_post_keys.c
@@ -376,8 +376,7 @@ TEH_handler_management_post_keys (
   }
   GNUNET_log (GNUNET_ERROR_TYPE_INFO,
               "Received /management/keys\n");
-  akc.ksh = TEH_keys_get_state2 (true); /* may start its own transaction, thus
-                                     must be done here, before we run ours! */
+  akc.ksh = TEH_keys_get_state_for_management_only (); /* may start its own 
transaction, thus must be done here, before we run ours! */
   if (NULL == akc.ksh)
   {
     GNUNET_break_op (0);

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

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