Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use dedicated type for error codes #3441

Merged
merged 1 commit into from
Jan 31, 2020

Commits on Jan 29, 2020

  1. 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
    vasild committed Jan 29, 2020
    Configuration menu
    Copy the full SHA
    e3879d9 View commit details
    Browse the repository at this point in the history