mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 15:14:23 +01:00
Use dedicated type for error codes
Before this patch we used `int` for error codes. The problem with `int` is that we try to pass it to/from wire and the size of `int` is not defined by the standard. So a sender with 4-byte `int` would write 4 bytes to the wire and a receiver with 2-byte `int` (for example) would read just 2 bytes from the wire. To resolve this: * Introduce an error code type with a known size: `typedef s32 errcode_t`. * Change all error code macros to constants of type `errcode_t`. Constants also play better with gdb - it would visualize the name of the constant instead of the numeric value. * Change all functions that take error codes to take the new type `errcode_t` instead of `int`. * Introduce towire / fromwire functions to send / receive the newly added type `errcode_t` and use it instead of `towire_int()`. In addition: * Remove the now unneeded `towire_int()`. * Replace a hardcoded error code `-2` with a new constant `INVOICE_EXPIRED_DURING_WAIT` (903). Changelog-Changed: The waitinvoice command would now return error code 903 to designate that the invoice expired during wait, instead of the previous -2
This commit is contained in:
committed by
ZmnSCPxj, ZmnSCPxj jxPCSmnZ
parent
295ca2a436
commit
55173a56b7
@@ -3,55 +3,59 @@
|
||||
*/
|
||||
#ifndef LIGHTNING_COMMON_JSONRPC_ERRORS_H
|
||||
#define LIGHTNING_COMMON_JSONRPC_ERRORS_H
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <common/errcode.h>
|
||||
|
||||
/* Standard errors defined by JSON-RPC 2.0 standard */
|
||||
#define JSONRPC2_INVALID_REQUEST -32600
|
||||
#define JSONRPC2_METHOD_NOT_FOUND -32601
|
||||
#define JSONRPC2_INVALID_PARAMS -32602
|
||||
static const errcode_t JSONRPC2_INVALID_REQUEST = -32600;
|
||||
static const errcode_t JSONRPC2_METHOD_NOT_FOUND = -32601;
|
||||
static const errcode_t JSONRPC2_INVALID_PARAMS = -32602;
|
||||
|
||||
/* Uncategorized error.
|
||||
* FIXME: This should be replaced in all places
|
||||
* with a specific error code, and then removed.
|
||||
*/
|
||||
#define LIGHTNINGD -1
|
||||
static const errcode_t LIGHTNINGD = -1;
|
||||
|
||||
/* Developer error in the parameters to param() call */
|
||||
#define PARAM_DEV_ERROR -2
|
||||
static const errcode_t PARAM_DEV_ERROR = -2;
|
||||
|
||||
/* Plugin returned an error */
|
||||
#define PLUGIN_ERROR -3
|
||||
static const errcode_t PLUGIN_ERROR = -3;
|
||||
|
||||
/* Errors from `pay`, `sendpay`, or `waitsendpay` commands */
|
||||
#define PAY_IN_PROGRESS 200
|
||||
#define PAY_RHASH_ALREADY_USED 201
|
||||
#define PAY_UNPARSEABLE_ONION 202
|
||||
#define PAY_DESTINATION_PERM_FAIL 203
|
||||
#define PAY_TRY_OTHER_ROUTE 204
|
||||
#define PAY_ROUTE_NOT_FOUND 205
|
||||
#define PAY_ROUTE_TOO_EXPENSIVE 206
|
||||
#define PAY_INVOICE_EXPIRED 207
|
||||
#define PAY_NO_SUCH_PAYMENT 208
|
||||
#define PAY_UNSPECIFIED_ERROR 209
|
||||
#define PAY_STOPPED_RETRYING 210
|
||||
static const errcode_t PAY_IN_PROGRESS = 200;
|
||||
static const errcode_t PAY_RHASH_ALREADY_USED = 201;
|
||||
static const errcode_t PAY_UNPARSEABLE_ONION = 202;
|
||||
static const errcode_t PAY_DESTINATION_PERM_FAIL = 203;
|
||||
static const errcode_t PAY_TRY_OTHER_ROUTE = 204;
|
||||
static const errcode_t PAY_ROUTE_NOT_FOUND = 205;
|
||||
static const errcode_t PAY_ROUTE_TOO_EXPENSIVE = 206;
|
||||
static const errcode_t PAY_INVOICE_EXPIRED = 207;
|
||||
static const errcode_t PAY_NO_SUCH_PAYMENT = 208;
|
||||
static const errcode_t PAY_UNSPECIFIED_ERROR = 209;
|
||||
static const errcode_t PAY_STOPPED_RETRYING = 210;
|
||||
|
||||
/* `fundchannel` or `withdraw` errors */
|
||||
#define FUND_MAX_EXCEEDED 300
|
||||
#define FUND_CANNOT_AFFORD 301
|
||||
#define FUND_OUTPUT_IS_DUST 302
|
||||
#define FUNDING_BROADCAST_FAIL 303
|
||||
#define FUNDING_STILL_SYNCING_BITCOIN 304
|
||||
#define FUNDING_PEER_NOT_CONNECTED 305
|
||||
#define FUNDING_UNKNOWN_PEER 306
|
||||
static const errcode_t FUND_MAX_EXCEEDED = 300;
|
||||
static const errcode_t FUND_CANNOT_AFFORD = 301;
|
||||
static const errcode_t FUND_OUTPUT_IS_DUST = 302;
|
||||
static const errcode_t FUNDING_BROADCAST_FAIL = 303;
|
||||
static const errcode_t FUNDING_STILL_SYNCING_BITCOIN = 304;
|
||||
static const errcode_t FUNDING_PEER_NOT_CONNECTED = 305;
|
||||
static const errcode_t FUNDING_UNKNOWN_PEER = 306;
|
||||
|
||||
/* `connect` errors */
|
||||
#define CONNECT_NO_KNOWN_ADDRESS 400
|
||||
#define CONNECT_ALL_ADDRESSES_FAILED 401
|
||||
static const errcode_t CONNECT_NO_KNOWN_ADDRESS = 400;
|
||||
static const errcode_t CONNECT_ALL_ADDRESSES_FAILED = 401;
|
||||
|
||||
/* Errors from `invoice` command */
|
||||
#define INVOICE_LABEL_ALREADY_EXISTS 900
|
||||
#define INVOICE_PREIMAGE_ALREADY_EXISTS 901
|
||||
#define INVOICE_HINTS_GAVE_NO_ROUTES 902
|
||||
#define INVOICE_WAIT_TIMED_OUT 904
|
||||
static const errcode_t INVOICE_LABEL_ALREADY_EXISTS = 900;
|
||||
static const errcode_t INVOICE_PREIMAGE_ALREADY_EXISTS = 901;
|
||||
static const errcode_t INVOICE_HINTS_GAVE_NO_ROUTES = 902;
|
||||
static const errcode_t INVOICE_EXPIRED_DURING_WAIT = 903;
|
||||
static const errcode_t INVOICE_WAIT_TIMED_OUT = 904;
|
||||
|
||||
#endif /* LIGHTNING_COMMON_JSONRPC_ERRORS_H */
|
||||
|
||||
Reference in New Issue
Block a user