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

Function per_time_check

lightningd/runes.c:104–140  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

102}
103
104static const char *per_time_check(const tal_t *ctx,
105 const struct runes *runes,
106 const struct rune *rune,
107 const struct rune_altern *alt,
108 struct cond_info *cinfo)
109{
110 u64 r, multiplier;
111 char *endp;
112
113 if (alt->condition != '=')
114 return "per operator must be =";
115
116 r = strtoul(alt->value, &endp, 10);
117 if (endp == alt->value || r == 0 || r >= UINT32_MAX)
118 return "malformed per";
119 if (streq(endp, "") || streq(endp, "sec")) {
120 multiplier = sec_per_nsec;
121 } else if (streq(endp, "nsec")) {
122 multiplier = 1;
123 } else if (streq(endp, "usec")) {
124 multiplier = 1000;
125 } else if (streq(endp, "msec")) {
126 multiplier = 1000000;
127 } else if (streq(endp, "min")) {
128 multiplier = 60 * sec_per_nsec;
129 } else if (streq(endp, "hour")) {
130 multiplier = 60 * 60 * sec_per_nsec;
131 } else if (streq(endp, "day")) {
132 multiplier = 24 * 60 * 60 * sec_per_nsec;
133 } else {
134 return "malformed suffix";
135 }
136 if (mul_overflows_u64(r, multiplier)) {
137 return "per overflow";
138 }
139 return last_time_check(rune, cinfo, r * multiplier);
140}
141
142static const char *rate_limit_check(const tal_t *ctx,
143 const struct runes *runes,

Callers 1

check_conditionFunction · 0.85

Calls 2

mul_overflows_u64Function · 0.85
last_time_checkFunction · 0.85

Tested by

no test coverage detected