MCPcopy Create free account
hub / github.com/ElementsProject/lightning / htlc_in_check

Function htlc_in_check

lightningd/htlc_end.c:92–124  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

90}
91
92struct htlc_in *htlc_in_check(const struct htlc_in *hin, const char *abortstr)
93{
94 if (amount_msat_is_zero(hin->msat))
95 return corrupt(abortstr, "zero msatoshi");
96 else if (htlc_state_owner(hin->hstate) != REMOTE)
97 return corrupt(abortstr, "invalid state %s",
98 htlc_state_name(hin->hstate));
99 else if (hin->failonion && hin->preimage)
100 return corrupt(abortstr, "Both failonion and succeeded");
101 else if (hin->badonion != 0 && hin->preimage)
102 return corrupt(abortstr, "Both badonion and succeeded");
103 else if (hin->failonion && hin->badonion)
104 return corrupt(abortstr, "Both failed and malformed");
105
106 /* Can't have a resolution while still being added. */
107 if (hin->hstate >= RCVD_ADD_HTLC
108 && hin->hstate <= RCVD_ADD_ACK_REVOCATION) {
109 if (hin->preimage)
110 return corrupt(abortstr, "Still adding, has preimage");
111 if (hin->failonion)
112 return corrupt(abortstr, "Still adding, has failmsg");
113 if (hin->badonion)
114 return corrupt(abortstr, "Still adding, has badonion");
115 } else if (hin->hstate >= SENT_REMOVE_HTLC
116 && hin->hstate <= SENT_REMOVE_ACK_REVOCATION) {
117 if (!hin->preimage && !hin->failonion && !hin->badonion)
118 return corrupt(abortstr, "Removing, no resolution");
119 } else
120 return corrupt(abortstr, "Bad state %s",
121 htlc_state_name(hin->hstate));
122
123 return cast_const(struct htlc_in *, hin);
124}
125
126struct htlc_in *new_htlc_in(const tal_t *ctx,
127 struct channel *channel, u64 id,

Callers 7

fail_in_htlcFunction · 0.70
fulfill_htlcFunction · 0.70
peer_accepted_htlcFunction · 0.70
remove_htlc_inFunction · 0.70
update_in_htlcFunction · 0.70
new_htlc_inFunction · 0.70

Calls 4

amount_msat_is_zeroFunction · 0.85
htlc_state_ownerFunction · 0.85
corruptFunction · 0.70
htlc_state_nameFunction · 0.50

Tested by

no test coverage detected