summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <dold@inria.fr>2015-12-25 16:07:21 +0100
committerFlorian Dold <dold@inria.fr>2015-12-25 16:07:21 +0100
commitb25d59dcbf1444b5e2c803992b786ba7399a5801 (patch)
tree2f6f459a075df704863082a2abfb111f0462724d
parent723f096d6e94d02d5ced01c819bd06e82e9dcde6 (diff)
downloadmerchant-b25d59dcbf1444b5e2c803992b786ba7399a5801.tar.gz
merchant-b25d59dcbf1444b5e2c803992b786ba7399a5801.tar.bz2
merchant-b25d59dcbf1444b5e2c803992b786ba7399a5801.zip
Fix reference counting bug and contract signature
-rw-r--r--src/backend/taler-merchant-httpd_contract.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/src/backend/taler-merchant-httpd_contract.c b/src/backend/taler-merchant-httpd_contract.c
index 8a0bbccc..7f8e44a1 100644
--- a/src/backend/taler-merchant-httpd_contract.c
+++ b/src/backend/taler-merchant-httpd_contract.c
@@ -95,7 +95,7 @@ MH_handler_contract (struct TMH_RequestHandler *rh,
sizeof (pubkey)));
/* create contract signature */
GNUNET_assert (GNUNET_OK ==
- TALER_hash_json (root,
+ TALER_hash_json (jcontract,
&contract.h_contract));
contract.purpose.purpose = htonl (TALER_SIGNATURE_MERCHANT_CONTRACT);
contract.purpose.size = htonl (sizeof (contract));
@@ -103,30 +103,31 @@ MH_handler_contract (struct TMH_RequestHandler *rh,
&contract.purpose,
&contract_sig);
- pay_url = json_object_get (jcontract, "pay_url");
+ pay_url = json_object_get (root, "pay_url");
if (NULL == pay_url)
{
return TMH_RESPONSE_reply_internal_error (connection,
"pay url missing");
}
- exec_url = json_object_get (jcontract, "exec_url");
+ exec_url = json_object_get (root, "exec_url");
if (NULL == exec_url)
{
return TMH_RESPONSE_reply_internal_error (connection,
"exec url missing");
}
-
/* return final response */
- return TMH_RESPONSE_reply_json_pack (connection,
- MHD_HTTP_OK,
- "{s:o, s:o, s:o, s:o, s:o}",
- "contract", jcontract,
- "exec_url", exec_url,
- "pay_url", pay_url,
- "sig", TALER_json_from_data (&contract_sig,
- sizeof (contract_sig)),
- "H_contract", TALER_json_from_data (&contract.h_contract,
- sizeof (contract.h_contract)));
+ res = TMH_RESPONSE_reply_json_pack (connection,
+ MHD_HTTP_OK,
+ "{s:O, s:O, s:O, s:o, s:o}",
+ "contract", jcontract,
+ "exec_url", exec_url,
+ "pay_url", pay_url,
+ "sig", TALER_json_from_data (&contract_sig,
+ sizeof (contract_sig)),
+ "H_contract", TALER_json_from_data (&contract.h_contract,
+ sizeof (contract.h_contract)));
+ json_decref (root);
+ return res;
}
/* end of taler-merchant-httpd_contract.c */