summaryrefslogtreecommitdiff
path: root/src/exchange
diff options
context:
space:
mode:
Diffstat (limited to 'src/exchange')
-rw-r--r--src/exchange/taler-exchange-httpd_keystate.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/exchange/taler-exchange-httpd_keystate.c b/src/exchange/taler-exchange-httpd_keystate.c
index ce2eafa71..5af391aca 100644
--- a/src/exchange/taler-exchange-httpd_keystate.c
+++ b/src/exchange/taler-exchange-httpd_keystate.c
@@ -2091,6 +2091,20 @@ TEH_KS_handler_keys (struct TEH_RequestHandler *rh,
? krd->response_compressed
: krd->response_uncompressed);
TEH_KS_release (key_state);
+
+ /**
+ * Not the best style, but needed since the logic has this
+ * dual behaviour: some functions touch directly the global
+ * variable, some others want the key state passed in the
+ * arguments.
+ *
+ * NOTE, this NULL-ification is needed because otherwise
+ * the internal key state object gets left with refcnt == 0
+ * and a non-NULL global pointer to it.
+ */
+ if (internal_key_state == key_state)
+ internal_key_state = NULL;
+
return ret;
}