gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] branch master updated: ensure /management/keys cache is


From: gnunet
Subject: [taler-exchange] branch master updated: ensure /management/keys cache is flushed when keys change
Date: Fri, 15 Jan 2021 18:17:06 +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 148f8133 ensure /management/keys cache is flushed when keys change
148f8133 is described below

commit 148f81331a6fdec9e7db90fad0d2b42ce09c6b61
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Fri Jan 15 18:17:04 2021 +0100

    ensure /management/keys cache is flushed when keys change
---
 src/exchange/taler-exchange-httpd_keys.c | 39 ++++++++++++++++++++------------
 1 file changed, 25 insertions(+), 14 deletions(-)

diff --git a/src/exchange/taler-exchange-httpd_keys.c 
b/src/exchange/taler-exchange-httpd_keys.c
index d2223b51..5ef3bf45 100644
--- a/src/exchange/taler-exchange-httpd_keys.c
+++ b/src/exchange/taler-exchange-httpd_keys.c
@@ -174,6 +174,12 @@ struct HelperState
    */
   struct GNUNET_CONTAINER_MultiPeerMap *esign_keys;
 
+  /**
+   * Cached reply for a GET /management/keys request.  Used so we do not
+   * re-create the reply every time.
+   */
+  json_t *management_keys_reply;
+
 };
 
 
@@ -254,12 +260,6 @@ struct TEH_KeyStateHandle
    */
   json_t *auditors;
 
-  /**
-   * Cached reply for a GET /management/keys request.  Used so we do not
-   * re-create the reply every time.
-   */
-  json_t *management_keys_reply;
-
   /**
    * Sorted array of responses to /keys (MUST be sorted by cherry-picking 
date) of
    * length @e krd_array_length;
@@ -582,6 +582,11 @@ destroy_key_helpers (struct HelperState *hs)
                                          hs);
   GNUNET_CONTAINER_multipeermap_destroy (hs->esign_keys);
   hs->esign_keys = NULL;
+  if (NULL != hs->management_keys_reply)
+  {
+    json_decref (hs->management_keys_reply);
+    hs->management_keys_reply = NULL;
+  }
   if (NULL != hs->dh)
   {
     TALER_CRYPTO_helper_denom_disconnect (hs->dh);
@@ -658,6 +663,11 @@ helper_denom_cb (
       &hd->h_denom_pub,
       hd,
       GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+  if (NULL != hs->management_keys_reply)
+  {
+    json_decref (hs->management_keys_reply);
+    hs->management_keys_reply = NULL;
+  }
 }
 
 
@@ -719,6 +729,11 @@ helper_esign_cb (
       &pid,
       hsk,
       GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+  if (NULL != hs->management_keys_reply)
+  {
+    json_decref (hs->management_keys_reply);
+    hs->management_keys_reply = NULL;
+  }
 }
 
 
@@ -845,11 +860,6 @@ destroy_key_state (struct TEH_KeyStateHandle *ksh,
   GNUNET_CONTAINER_multipeermap_destroy (ksh->signkey_map);
   json_decref (ksh->auditors);
   ksh->auditors = NULL;
-  if (NULL != ksh->management_keys_reply)
-  {
-    json_decref (ksh->management_keys_reply);
-    ksh->management_keys_reply = NULL;
-  }
   if (free_helper)
   {
     destroy_key_helpers (ksh->helpers);
@@ -2421,7 +2431,8 @@ TEH_keys_management_get_handler (const struct 
TEH_RequestHandler *rh,
                                        TALER_EC_EXCHANGE_GENERIC_KEYS_MISSING,
                                        "no key state");
   }
-  if (NULL == ksh->management_keys_reply)
+  sync_key_helpers (ksh->helpers);
+  if (NULL == ksh->helpers->management_keys_reply)
   {
     struct FutureBuilderContext fbc = {
       .ksh = ksh,
@@ -2459,11 +2470,11 @@ TEH_keys_management_get_handler (const struct 
TEH_RequestHandler *rh,
                                          MHD_HTTP_INTERNAL_SERVER_ERROR,
                                          
TALER_EC_GENERIC_JSON_ALLOCATION_FAILURE,
                                          NULL);
-    ksh->management_keys_reply = json_incref (reply);
+    ksh->helpers->management_keys_reply = json_incref (reply);
   }
   else
   {
-    reply = json_incref (ksh->management_keys_reply);
+    reply = json_incref (ksh->helpers->management_keys_reply);
   }
   return TALER_MHD_reply_json (connection,
                                reply,

-- 
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]