nicer TALER_MINT_parse_post_json return value handling, fixing return values where GNUNET_SYSERR is used instead of MHD_NO, marking cases where we should return a proper error message
This commit is contained in:
parent
f398b34414
commit
4bd515191b
@ -90,20 +90,18 @@ TALER_MINT_handler_deposit (struct RequestHandler *rh,
|
|||||||
|
|
||||||
res = TALER_MINT_parse_post_json (connection,
|
res = TALER_MINT_parse_post_json (connection,
|
||||||
connection_cls,
|
connection_cls,
|
||||||
upload_data, upload_data_size,
|
upload_data,
|
||||||
|
upload_data_size,
|
||||||
&json);
|
&json);
|
||||||
if (GNUNET_SYSERR == res)
|
if (GNUNET_SYSERR == res)
|
||||||
{
|
|
||||||
// FIXME: return 'internal error'
|
|
||||||
GNUNET_break (0);
|
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
}
|
if ( (GNUNET_NO == res) || (NULL == json) )
|
||||||
if (GNUNET_NO == res)
|
|
||||||
return MHD_YES;
|
return MHD_YES;
|
||||||
if (NULL == (db_conn = TALER_MINT_DB_get_connection ()))
|
if (NULL == (db_conn = TALER_MINT_DB_get_connection ()))
|
||||||
{
|
{
|
||||||
|
/* FIXME: return error message to client via MHD! */
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return GNUNET_SYSERR;
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
deposit = NULL;
|
deposit = NULL;
|
||||||
@ -213,7 +211,8 @@ TALER_MINT_handler_deposit (struct RequestHandler *rh,
|
|||||||
if (GNUNET_SYSERR == res)
|
if (GNUNET_SYSERR == res)
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return GNUNET_SYSERR;
|
/* FIXME: return error message to client via MHD! */
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -235,7 +234,8 @@ TALER_MINT_handler_deposit (struct RequestHandler *rh,
|
|||||||
if (GNUNET_SYSERR == res)
|
if (GNUNET_SYSERR == res)
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return GNUNET_SYSERR;
|
/* FIXME: return error message to client via MHD! */
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* coin valid but not known => insert into DB */
|
/* coin valid but not known => insert into DB */
|
||||||
@ -246,14 +246,16 @@ TALER_MINT_handler_deposit (struct RequestHandler *rh,
|
|||||||
if (GNUNET_OK != TALER_MINT_DB_insert_known_coin (db_conn, &known_coin))
|
if (GNUNET_OK != TALER_MINT_DB_insert_known_coin (db_conn, &known_coin))
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return GNUNET_SYSERR;
|
/* FIXME: return error message to client via MHD! */
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GNUNET_OK != TALER_MINT_DB_insert_deposit (db_conn, deposit))
|
if (GNUNET_OK != TALER_MINT_DB_insert_deposit (db_conn, deposit))
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return GNUNET_SYSERR;
|
/* FIXME: return error message to client via MHD! */
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
return helper_deposit_send_response_success (connection, deposit);
|
return helper_deposit_send_response_success (connection, deposit);
|
||||||
|
|
||||||
|
@ -112,7 +112,6 @@ buffer_deinit (struct Buffer *buf)
|
|||||||
* @param max_size maximum size that the buffer can grow to
|
* @param max_size maximum size that the buffer can grow to
|
||||||
* @return GNUNET_OK on success,
|
* @return GNUNET_OK on success,
|
||||||
* GNUNET_NO if the buffer can't accomodate for the new data
|
* GNUNET_NO if the buffer can't accomodate for the new data
|
||||||
* GNUNET_SYSERR on fatal error (out of memory?)
|
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
buffer_append (struct Buffer *buf,
|
buffer_append (struct Buffer *buf,
|
||||||
@ -142,18 +141,28 @@ buffer_append (struct Buffer *buf,
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Process a POST request containing a JSON object.
|
* Process a POST request containing a JSON object. This
|
||||||
|
* function realizes an MHD POST processor that will
|
||||||
|
* (incrementally) process JSON data uploaded to the HTTP
|
||||||
|
* server. It will store the required state in the
|
||||||
|
* "connection_cls", which must be cleaned up using
|
||||||
|
* #TALER_MINT_parse_post_cleanup_callback().
|
||||||
*
|
*
|
||||||
* @param connection the MHD connection
|
* @param connection the MHD connection
|
||||||
* @param con_cs the closure (contains a 'struct Buffer *')
|
* @param con_cs the closure (points to a `struct Buffer *`)
|
||||||
* @param upload_data the POST data
|
* @param upload_data the POST data
|
||||||
* @param upload_data_size the POST data size
|
* @param upload_data_size number of bytes in @a upload_data
|
||||||
* @param json the JSON object for a completed request
|
* @param json the JSON object for a completed request
|
||||||
*
|
|
||||||
* @returns
|
* @returns
|
||||||
* GNUNET_YES if json object was parsed
|
* GNUNET_YES if json object was parsed or at least
|
||||||
|
* may be parsed in the future (call again);
|
||||||
|
* `*json` will be NULL if we need to be called again,
|
||||||
|
* and non-NULL if we are done.
|
||||||
* GNUNET_NO is request incomplete or invalid
|
* GNUNET_NO is request incomplete or invalid
|
||||||
|
* (error message was generated)
|
||||||
* GNUNET_SYSERR on internal error
|
* GNUNET_SYSERR on internal error
|
||||||
|
* (we could not even queue an error message,
|
||||||
|
* close HTTP session with MHD_NO)
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
TALER_MINT_parse_post_json (struct MHD_Connection *connection,
|
TALER_MINT_parse_post_json (struct MHD_Connection *connection,
|
||||||
@ -164,10 +173,10 @@ TALER_MINT_parse_post_json (struct MHD_Connection *connection,
|
|||||||
{
|
{
|
||||||
struct Buffer *r = *con_cls;
|
struct Buffer *r = *con_cls;
|
||||||
|
|
||||||
|
*json = NULL;
|
||||||
if (NULL == *con_cls)
|
if (NULL == *con_cls)
|
||||||
{
|
{
|
||||||
/* We are seeing a fresh POST request. */
|
/* We are seeing a fresh POST request. */
|
||||||
|
|
||||||
r = GNUNET_new (struct Buffer);
|
r = GNUNET_new (struct Buffer);
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
buffer_init (r,
|
buffer_init (r,
|
||||||
@ -179,11 +188,15 @@ TALER_MINT_parse_post_json (struct MHD_Connection *connection,
|
|||||||
*con_cls = NULL;
|
*con_cls = NULL;
|
||||||
buffer_deinit (r);
|
buffer_deinit (r);
|
||||||
GNUNET_free (r);
|
GNUNET_free (r);
|
||||||
return GNUNET_SYSERR;
|
return (MHD_NO ==
|
||||||
|
TALER_MINT_reply_internal_error (connection,
|
||||||
|
"out of memory"))
|
||||||
|
? GNUNET_SYSERR : GNUNET_NO;
|
||||||
}
|
}
|
||||||
|
/* everything OK, wait for more POST data */
|
||||||
*upload_data_size = 0;
|
*upload_data_size = 0;
|
||||||
*con_cls = r;
|
*con_cls = r;
|
||||||
return GNUNET_NO;
|
return GNUNET_YES;
|
||||||
}
|
}
|
||||||
if (0 != *upload_data_size)
|
if (0 != *upload_data_size)
|
||||||
{
|
{
|
||||||
@ -195,31 +208,33 @@ TALER_MINT_parse_post_json (struct MHD_Connection *connection,
|
|||||||
*upload_data_size,
|
*upload_data_size,
|
||||||
REQUEST_BUFFER_MAX))
|
REQUEST_BUFFER_MAX))
|
||||||
{
|
{
|
||||||
/* Request too long or we're out of memory. */
|
/* Request too long */
|
||||||
|
|
||||||
*con_cls = NULL;
|
*con_cls = NULL;
|
||||||
buffer_deinit (r);
|
buffer_deinit (r);
|
||||||
GNUNET_free (r);
|
GNUNET_free (r);
|
||||||
return GNUNET_SYSERR;
|
return (MHD_NO ==
|
||||||
|
TALER_MINT_reply_request_too_large (connection))
|
||||||
|
? GNUNET_SYSERR : GNUNET_NO;
|
||||||
}
|
}
|
||||||
|
/* everything OK, wait for more POST data */
|
||||||
*upload_data_size = 0;
|
*upload_data_size = 0;
|
||||||
return GNUNET_NO;
|
return GNUNET_YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We have seen the whole request. */
|
/* We have seen the whole request. */
|
||||||
|
|
||||||
*json = json_loadb (r->data, r->fill, 0, NULL);
|
*json = json_loadb (r->data,
|
||||||
|
r->fill,
|
||||||
|
0,
|
||||||
|
NULL);
|
||||||
buffer_deinit (r);
|
buffer_deinit (r);
|
||||||
GNUNET_free (r);
|
GNUNET_free (r);
|
||||||
if (NULL == *json)
|
if (NULL == *json)
|
||||||
{
|
{
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
|
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
|
||||||
"Can't parse JSON request body\n");
|
"Failed to parse JSON request body\n");
|
||||||
return (MHD_YES ==
|
return (MHD_YES ==
|
||||||
TALER_MINT_reply_json_pack (connection,
|
TALER_MINT_reply_invalid_json (connection))
|
||||||
MHD_HTTP_BAD_REQUEST,
|
|
||||||
"{s:s}",
|
|
||||||
"error", "invalid json"))
|
|
||||||
? GNUNET_NO : GNUNET_SYSERR;
|
? GNUNET_NO : GNUNET_SYSERR;
|
||||||
}
|
}
|
||||||
*con_cls = NULL;
|
*con_cls = NULL;
|
||||||
|
@ -80,10 +80,11 @@ enum
|
|||||||
* @param upload_data the POST data
|
* @param upload_data the POST data
|
||||||
* @param upload_data_size number of bytes in @a upload_data
|
* @param upload_data_size number of bytes in @a upload_data
|
||||||
* @param json the JSON object for a completed request
|
* @param json the JSON object for a completed request
|
||||||
*
|
|
||||||
* @returns
|
* @returns
|
||||||
* GNUNET_YES if json object was parsed or at least
|
* GNUNET_YES if json object was parsed or at least
|
||||||
* may be parsed in the future (call again)
|
* may be parsed in the future (call again);
|
||||||
|
* `*json` will be NULL if we need to be called again,
|
||||||
|
* and non-NULL if we are done.
|
||||||
* GNUNET_NO is request incomplete or invalid
|
* GNUNET_NO is request incomplete or invalid
|
||||||
* (error message was generated)
|
* (error message was generated)
|
||||||
* GNUNET_SYSERR on internal error
|
* GNUNET_SYSERR on internal error
|
||||||
|
@ -609,18 +609,18 @@ TALER_MINT_handler_refresh_melt (struct RequestHandler *rh,
|
|||||||
res = TALER_MINT_parse_post_json (connection,
|
res = TALER_MINT_parse_post_json (connection,
|
||||||
connection_cls,
|
connection_cls,
|
||||||
upload_data,
|
upload_data,
|
||||||
upload_data_size, &root);
|
upload_data_size,
|
||||||
|
&root);
|
||||||
if (GNUNET_SYSERR == res)
|
if (GNUNET_SYSERR == res)
|
||||||
{
|
|
||||||
// FIXME: return 'internal error'?
|
|
||||||
GNUNET_break (0);
|
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
}
|
if ( (GNUNET_NO == res) || (NULL == root) )
|
||||||
if (GNUNET_NO == res)
|
|
||||||
return MHD_YES;
|
return MHD_YES;
|
||||||
|
|
||||||
if (NULL == (db_conn = TALER_MINT_DB_get_connection ()))
|
if (NULL == (db_conn = TALER_MINT_DB_get_connection ()))
|
||||||
return GNUNET_SYSERR;
|
{
|
||||||
|
/* FIXME: return error code to MHD! */
|
||||||
|
return MHD_NO;
|
||||||
|
}
|
||||||
|
|
||||||
/* session_pub field must always be present */
|
/* session_pub field must always be present */
|
||||||
res = request_json_require_nav (connection, root,
|
res = request_json_require_nav (connection, root,
|
||||||
@ -826,17 +826,13 @@ TALER_MINT_handler_refresh_commit (struct RequestHandler *rh,
|
|||||||
res = TALER_MINT_parse_post_json (connection,
|
res = TALER_MINT_parse_post_json (connection,
|
||||||
connection_cls,
|
connection_cls,
|
||||||
upload_data,
|
upload_data,
|
||||||
upload_data_size, &root);
|
upload_data_size,
|
||||||
|
&root);
|
||||||
if (GNUNET_SYSERR == res)
|
if (GNUNET_SYSERR == res)
|
||||||
{
|
|
||||||
// FIXME: return 'internal error'?
|
|
||||||
GNUNET_break (0);
|
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
}
|
if ( (GNUNET_NO == res) || (NULL == root) )
|
||||||
if (GNUNET_NO == res)
|
|
||||||
return MHD_YES;
|
return MHD_YES;
|
||||||
|
|
||||||
|
|
||||||
res = request_json_require_nav (connection, root,
|
res = request_json_require_nav (connection, root,
|
||||||
JNAV_FIELD, "session_pub",
|
JNAV_FIELD, "session_pub",
|
||||||
JNAV_RET_DATA,
|
JNAV_RET_DATA,
|
||||||
@ -1161,15 +1157,12 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
|
|
||||||
res = TALER_MINT_parse_post_json (connection,
|
res = TALER_MINT_parse_post_json (connection,
|
||||||
connection_cls,
|
connection_cls,
|
||||||
upload_data, upload_data_size,
|
upload_data,
|
||||||
|
upload_data_size,
|
||||||
&root);
|
&root);
|
||||||
if (GNUNET_SYSERR == res)
|
if (GNUNET_SYSERR == res)
|
||||||
{
|
|
||||||
// FIXME: return 'internal error'?
|
|
||||||
GNUNET_break (0);
|
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
}
|
if ( (GNUNET_NO == res) || (NULL == root) )
|
||||||
if (GNUNET_NO == res)
|
|
||||||
return MHD_YES;
|
return MHD_YES;
|
||||||
|
|
||||||
res = request_json_require_nav (connection, root,
|
res = request_json_require_nav (connection, root,
|
||||||
@ -1186,6 +1179,7 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
if (NULL == (db_conn = TALER_MINT_DB_get_connection ()))
|
if (NULL == (db_conn = TALER_MINT_DB_get_connection ()))
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
|
// FIXME: return 'internal error'?
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1199,6 +1193,7 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
if (GNUNET_SYSERR == res)
|
if (GNUNET_SYSERR == res)
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
|
// FIXME: return 'internal error'?
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1242,14 +1237,16 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
if (GNUNET_OK != res)
|
if (GNUNET_OK != res)
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return GNUNET_SYSERR;
|
// FIXME: return 'internal error'?
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
res = TALER_MINT_DB_get_refresh_melt (db_conn, &refresh_session_pub, j, &coin_pub);
|
res = TALER_MINT_DB_get_refresh_melt (db_conn, &refresh_session_pub, j, &coin_pub);
|
||||||
if (GNUNET_OK != res)
|
if (GNUNET_OK != res)
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return GNUNET_SYSERR;
|
// FIXME: return 'internal error'?
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We're converting key types here, which is not very nice
|
/* We're converting key types here, which is not very nice
|
||||||
@ -1259,14 +1256,16 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
&transfer_secret))
|
&transfer_secret))
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return GNUNET_SYSERR;
|
// FIXME: return 'internal error'?
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 >= TALER_refresh_decrypt (commit_link.shared_secret_enc, TALER_REFRESH_SHARED_SECRET_LENGTH,
|
if (0 >= TALER_refresh_decrypt (commit_link.shared_secret_enc, TALER_REFRESH_SHARED_SECRET_LENGTH,
|
||||||
&transfer_secret, &shared_secret))
|
&transfer_secret, &shared_secret))
|
||||||
{
|
{
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "decryption failed\n");
|
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "decryption failed\n");
|
||||||
return GNUNET_SYSERR;
|
// FIXME: return 'internal error'?
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GNUNET_NO == secret_initialized)
|
if (GNUNET_NO == secret_initialized)
|
||||||
@ -1277,7 +1276,8 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
else if (0 != memcmp (&shared_secret, &last_shared_secret, sizeof (struct GNUNET_HashCode)))
|
else if (0 != memcmp (&shared_secret, &last_shared_secret, sizeof (struct GNUNET_HashCode)))
|
||||||
{
|
{
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "shared secrets do not match\n");
|
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "shared secrets do not match\n");
|
||||||
return GNUNET_SYSERR;
|
// FIXME: return error code!
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -1286,7 +1286,8 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
if (0 != memcmp (&transfer_pub_check, &commit_link.transfer_pub, sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey)))
|
if (0 != memcmp (&transfer_pub_check, &commit_link.transfer_pub, sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey)))
|
||||||
{
|
{
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "transfer keys do not match\n");
|
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "transfer keys do not match\n");
|
||||||
return GNUNET_SYSERR;
|
// FIXME: return error code!
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1310,7 +1311,8 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
if (GNUNET_OK != res)
|
if (GNUNET_OK != res)
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return GNUNET_SYSERR;
|
// FIXME: return error code!
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1318,20 +1320,23 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
&last_shared_secret, &link_data))
|
&last_shared_secret, &link_data))
|
||||||
{
|
{
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "decryption failed\n");
|
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "decryption failed\n");
|
||||||
return GNUNET_SYSERR;
|
// FIXME: return error code!
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
GNUNET_CRYPTO_ecdsa_key_get_public (&link_data.coin_priv, &coin_pub);
|
GNUNET_CRYPTO_ecdsa_key_get_public (&link_data.coin_priv, &coin_pub);
|
||||||
if (NULL == (bkey = TALER_RSA_blinding_key_decode (&link_data.bkey_enc)))
|
if (NULL == (bkey = TALER_RSA_blinding_key_decode (&link_data.bkey_enc)))
|
||||||
{
|
{
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Invalid blinding key\n");
|
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Invalid blinding key\n");
|
||||||
return GNUNET_SYSERR;
|
// FIXME: return error code!
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
res = TALER_MINT_DB_get_refresh_order (db_conn, j, &refresh_session_pub, &denom_pub);
|
res = TALER_MINT_DB_get_refresh_order (db_conn, j, &refresh_session_pub, &denom_pub);
|
||||||
if (GNUNET_OK != res)
|
if (GNUNET_OK != res)
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return GNUNET_SYSERR;
|
// FIXME: return error code!
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
if (NULL == (coin_ev_check =
|
if (NULL == (coin_ev_check =
|
||||||
TALER_RSA_message_blind (&coin_pub,
|
TALER_RSA_message_blind (&coin_pub,
|
||||||
@ -1340,7 +1345,8 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
&denom_pub)))
|
&denom_pub)))
|
||||||
{
|
{
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "blind failed\n");
|
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "blind failed\n");
|
||||||
return GNUNET_SYSERR;
|
// FIXME: return error code!
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 != memcmp (&coin_ev_check,
|
if (0 != memcmp (&coin_ev_check,
|
||||||
@ -1349,7 +1355,8 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
{
|
{
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "blind envelope does not match for kappa=%d, old=%d\n",
|
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "blind envelope does not match for kappa=%d, old=%d\n",
|
||||||
(int) i, (int) j);
|
(int) i, (int) j);
|
||||||
return GNUNET_SYSERR;
|
// FIXME: return error code!
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1358,6 +1365,7 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
if (GNUNET_OK != TALER_MINT_DB_transaction (db_conn))
|
if (GNUNET_OK != TALER_MINT_DB_transaction (db_conn))
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
|
// FIXME: return error code!
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1376,13 +1384,15 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
if (GNUNET_OK != res)
|
if (GNUNET_OK != res)
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return GNUNET_SYSERR;
|
// FIXME: return error code!
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
res = TALER_MINT_DB_get_refresh_order (db_conn, j, &refresh_session_pub, &denom_pub);
|
res = TALER_MINT_DB_get_refresh_order (db_conn, j, &refresh_session_pub, &denom_pub);
|
||||||
if (GNUNET_OK != res)
|
if (GNUNET_OK != res)
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return GNUNET_SYSERR;
|
// FIXME: return error code!
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1392,7 +1402,8 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
if (NULL == dki)
|
if (NULL == dki)
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return GNUNET_SYSERR;
|
// FIXME: return error code!
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
TALER_RSA_sign (dki->denom_priv,
|
TALER_RSA_sign (dki->denom_priv,
|
||||||
@ -1401,7 +1412,8 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
&ev_sig))
|
&ev_sig))
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return GNUNET_SYSERR;
|
// FIXME: return error code!
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
res = TALER_MINT_DB_insert_refresh_collectable (db_conn,
|
res = TALER_MINT_DB_insert_refresh_collectable (db_conn,
|
||||||
@ -1411,7 +1423,8 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
if (GNUNET_OK != res)
|
if (GNUNET_OK != res)
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return GNUNET_SYSERR;
|
// FIXME: return error code!
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* mark that reveal was successful */
|
/* mark that reveal was successful */
|
||||||
@ -1420,7 +1433,8 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
if (GNUNET_OK != res)
|
if (GNUNET_OK != res)
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return GNUNET_SYSERR;
|
// FIXME: return error code!
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GNUNET_OK != TALER_MINT_DB_commit (db_conn))
|
if (GNUNET_OK != TALER_MINT_DB_commit (db_conn))
|
||||||
@ -1474,7 +1488,8 @@ TALER_MINT_handler_refresh_link (struct RequestHandler *rh,
|
|||||||
if (NULL == (db_conn = TALER_MINT_DB_get_connection ()))
|
if (NULL == (db_conn = TALER_MINT_DB_get_connection ()))
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return GNUNET_SYSERR;
|
// FIXME: return error code!
|
||||||
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
list = json_array ();
|
list = json_array ();
|
||||||
@ -1488,6 +1503,7 @@ TALER_MINT_handler_refresh_link (struct RequestHandler *rh,
|
|||||||
if (GNUNET_SYSERR == res)
|
if (GNUNET_SYSERR == res)
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
|
// FIXME: return error code!
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
if (GNUNET_NO == res)
|
if (GNUNET_NO == res)
|
||||||
@ -1504,6 +1520,7 @@ TALER_MINT_handler_refresh_link (struct RequestHandler *rh,
|
|||||||
if (GNUNET_SYSERR == res)
|
if (GNUNET_SYSERR == res)
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
|
// FIXME: return error code!
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
if (GNUNET_NO == res)
|
if (GNUNET_NO == res)
|
||||||
|
@ -138,6 +138,71 @@ TALER_MINT_reply_arg_missing (struct MHD_Connection *connection,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send a response indicating an internal error.
|
||||||
|
*
|
||||||
|
* @param connection the MHD connection to use
|
||||||
|
* @param hint hint about the internal error's nature
|
||||||
|
* @return a MHD result code
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
TALER_MINT_reply_internal_error (struct MHD_Connection *connection,
|
||||||
|
const char *hint)
|
||||||
|
{
|
||||||
|
json_t *json;
|
||||||
|
|
||||||
|
json = json_pack ("{ s:s, s:s }",
|
||||||
|
"error",
|
||||||
|
"internal error",
|
||||||
|
"hint",
|
||||||
|
hint);
|
||||||
|
return TALER_MINT_reply_json (connection,
|
||||||
|
json,
|
||||||
|
MHD_HTTP_BAD_REQUEST);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send a response indicating that the request was too big.
|
||||||
|
*
|
||||||
|
* @param connection the MHD connection to use
|
||||||
|
* @return a MHD result code
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
TALER_MINT_reply_request_too_large (struct MHD_Connection *connection)
|
||||||
|
{
|
||||||
|
struct MHD_Response *resp;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
resp = MHD_create_response_from_buffer (0,
|
||||||
|
NULL,
|
||||||
|
MHD_RESPMEM_PERSISTENT);
|
||||||
|
if (NULL == resp)
|
||||||
|
return MHD_NO;
|
||||||
|
ret = MHD_queue_response (connection,
|
||||||
|
MHD_HTTP_REQUEST_ENTITY_TOO_LARGE,
|
||||||
|
resp);
|
||||||
|
MHD_destroy_response (resp);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send a response indicating that the JSON was malformed.
|
||||||
|
*
|
||||||
|
* @param connection the MHD connection to use
|
||||||
|
* @return a MHD result code
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
TALER_MINT_reply_invalid_json (struct MHD_Connection *connection)
|
||||||
|
{
|
||||||
|
return TALER_MINT_reply_json_pack (connection,
|
||||||
|
MHD_HTTP_BAD_REQUEST,
|
||||||
|
"{s:s}",
|
||||||
|
"error",
|
||||||
|
"invalid json");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -90,6 +90,39 @@ TALER_MINT_reply_arg_missing (struct MHD_Connection *connection,
|
|||||||
const char *param_name);
|
const char *param_name);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send a response indicating an internal error.
|
||||||
|
*
|
||||||
|
* @param connection the MHD connection to use
|
||||||
|
* @param hint hint about the internal error's nature
|
||||||
|
* @return a MHD result code
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
TALER_MINT_reply_internal_error (struct MHD_Connection *connection,
|
||||||
|
const char *hint);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send a response indicating that the request was too big.
|
||||||
|
*
|
||||||
|
* @param connection the MHD connection to use
|
||||||
|
* @return a MHD result code
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
TALER_MINT_reply_request_too_large (struct MHD_Connection *connection);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send a response indicating that the JSON was malformed.
|
||||||
|
*
|
||||||
|
* @param connection the MHD connection to use
|
||||||
|
* @return a MHD result code
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
TALER_MINT_reply_invalid_json (struct MHD_Connection *connection);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user