core-lightning/common/Makefile
Vasil Dimov 55173a56b7 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
2020-01-31 06:02:47 +00:00

124 lines
3.7 KiB
Makefile

COMMON_SRC_NOGEN := \
common/addr.c \
common/amount.c \
common/base32.c \
common/base64.c \
common/bech32.c \
common/bech32_util.c \
common/bigsize.c \
common/bip32.c \
common/bolt11.c \
common/channel_config.c \
common/close_tx.c \
common/configdir.c \
common/crypto_state.c \
common/crypto_sync.c \
common/cryptomsg.c \
common/daemon.c \
common/daemon_conn.c \
common/decode_array.c \
common/derive_basepoints.c \
common/dev_disconnect.c \
common/features.c \
common/fee_states.c \
common/funding_tx.c \
common/gossip_rcvd_filter.c \
common/gossip_store.c \
common/hash_u5.c \
common/htlc_state.c \
common/htlc_trim.c \
common/htlc_tx.c \
common/htlc_wire.c \
common/initial_channel.c \
common/initial_commit_tx.c \
common/io_lock.c \
common/json.c \
common/json_helpers.c \
common/json_tok.c \
common/key_derive.c \
common/keyset.c \
common/memleak.c \
common/msg_queue.c \
common/node_id.c \
common/onion.c \
common/onionreply.c \
common/param.c \
common/per_peer_state.c \
common/peer_billboard.c \
common/peer_failed.c \
common/permute_tx.c \
common/ping.c \
common/pseudorand.c \
common/read_peer_msg.c \
common/socket_close.c \
common/sphinx.c \
common/status.c \
common/status_wire.c \
common/subdaemon.c \
common/timeout.c \
common/type_to_string.c \
common/utils.c \
common/utxo.c \
common/version.c \
common/wallet.c \
common/wallet_tx.c \
common/wireaddr.c \
common/wire_error.c \
common/withdraw_tx.c
COMMON_SRC_GEN := common/gen_status_wire.c common/gen_peer_status_wire.c
COMMON_HEADERS_NOGEN := $(COMMON_SRC_NOGEN:.c=.h) \
common/errcode.h \
common/gossip_constants.h \
common/htlc.h \
common/json_command.h \
common/jsonrpc_errors.h \
common/overflows.h \
common/status_levels.h
COMMON_HEADERS_GEN := common/gen_htlc_state_names.h common/gen_status_wire.h common/gen_peer_status_wire.h
COMMON_HEADERS := $(COMMON_HEADERS_GEN) $(COMMON_HEADERS_NOGEN)
COMMON_SRC := $(COMMON_SRC_NOGEN) $(COMMON_SRC_GEN)
COMMON_OBJS := $(COMMON_SRC:.c=.o)
# Common objects depends on bitcoin/ external/ and ccan
$(COMMON_OBJS): $(CCAN_HEADERS) $(BITCOIN_HEADERS) $(EXTERNAL_HEADERS) $(COMMON_HEADERS_GEN)
ALL_GEN_HEADERS += $(COMMON_HEADERS_GEN)
ALL_OBJS += $(COMMON_OBJS)
common/gen_htlc_state_names.h: common/htlc_state.h ccan/ccan/cdump/tools/cdump-enumstr
ccan/ccan/cdump/tools/cdump-enumstr common/htlc_state.h > $@
common/gen_status_wire.h: $(WIRE_GEN) common/status_wire.csv
$(WIRE_GEN) --page header $@ status < common/status_wire.csv > $@
common/gen_status_wire.c: $(WIRE_GEN) common/status_wire.csv
$(WIRE_GEN) --page impl ${@:.c=.h} status < common/status_wire.csv > $@
common/gen_peer_status_wire.h: $(WIRE_GEN) common/peer_status_wire.csv
$(WIRE_GEN) --page header $@ peer_status < common/peer_status_wire.csv > $@
common/gen_peer_status_wire.c: $(WIRE_GEN) common/peer_status_wire.csv
$(WIRE_GEN) --page impl ${@:.c=.h} peer_status < common/peer_status_wire.csv > $@
check-makefile: check-common-makefile
check-common-makefile:
if [ x"`LC_ALL=C ls common/*.h | grep -v ^common/gen_`" != x"`echo $(COMMON_HEADERS_NOGEN) | tr ' ' '\n' | LC_ALL=C sort`" ]; then echo COMMON_HEADERS_NOGEN incorrect; exit 1; fi
check-source-bolt: $(COMMON_SRC_NOGEN:%=bolt-check/%) $(COMMON_HEADERS:%=bolt-check/%)
check-whitespace: $(COMMON_SRC_NOGEN:%=check-whitespace/%) $(COMMON_HEADERS:%=check-whitespace/%)
check-source: $(COMMON_SRC_NOGEN:%=check-src-include-order/%) \
$(COMMON_HEADERS_NOGEN:%=check-hdr-include-order/%)
clean: common-clean
common-clean:
$(RM) common/gen*
include common/test/Makefile