Compare commits
9 Commits
uw-msg-for
...
master
Author | SHA1 | Date | |
---|---|---|---|
f408af0eb3 | |||
![]() |
e9b027a353 | ||
ac3c1e52f1 | |||
![]() |
4ef670162b | ||
a006410ce6 | |||
![]() |
e21f8f6fbf | ||
fe47d3715c | |||
![]() |
b9681dec88 | ||
b7cf6375fe |
@ -3,7 +3,7 @@
|
||||
{plugins, [rebar3_hex]}.
|
||||
{deps, [
|
||||
{gmserialization, {git, "https://git.qpq.swiss/QPQ-AG/gmserialization.git",
|
||||
{ref, "ac64e01b0f"}}}
|
||||
{ref, "0288719ae1"}}}
|
||||
]}.
|
||||
|
||||
{xref_checks, [undefined_function_calls, undefined_functions,
|
||||
|
@ -8,5 +8,5 @@
|
||||
1},
|
||||
{<<"gmserialization">>,
|
||||
{git,"https://git.qpq.swiss/QPQ-AG/gmserialization.git",
|
||||
{ref,"ac64e01b0f675c1a34c70a827062f381920742db"}},
|
||||
{ref,"0288719ae15814f3a53114c657502a24376bebfa"}},
|
||||
0}].
|
||||
|
@ -60,9 +60,10 @@ validate(#{ connect := #{ pubkey := PK
|
||||
, versions := Versions
|
||||
, pool_id := PoolId
|
||||
, extra_pubkeys := Extra
|
||||
, type := Type
|
||||
, type := Type0
|
||||
, nonces := Nonces
|
||||
}} = Msg, _Vsn) ->
|
||||
Type = to_atom(Type0),
|
||||
valid({list, protocol}, Protocols),
|
||||
valid({list, version} , Versions),
|
||||
valid(pubkey, PK),
|
||||
@ -91,7 +92,7 @@ validate(#{ candidate := #{ seq := Seq
|
||||
validate(#{ get_nonces := #{ seq := Seq
|
||||
, n := N }} = Msg, _Vsn) ->
|
||||
valid(seq, Seq),
|
||||
valid(pos_integer, N),
|
||||
valid(pos_int, N),
|
||||
Msg;
|
||||
validate(#{ new_server := #{ host := Host, port := Port, keep := Keep }} = Msg, _Vsn) ->
|
||||
valid(string, Host),
|
||||
@ -297,10 +298,10 @@ decode_msg_(<<"no_solution">>, #{ <<"seq">> := Seq
|
||||
, nonce => Nonce }}.
|
||||
|
||||
valid(Type, Val) ->
|
||||
try valid_(Type, Val)
|
||||
try true = valid_(Type, Val)
|
||||
catch
|
||||
error:_ ->
|
||||
false
|
||||
error({invalid, {Type, Val}})
|
||||
end.
|
||||
|
||||
valid_({list,T}, Ps) -> lists:all(fun(X) -> valid_(T, X) end, Ps);
|
||||
@ -308,12 +309,13 @@ valid_(protocol, P) -> is_binary(P);
|
||||
valid_(version, V) -> is_binary(V);
|
||||
valid_(pubkey, PK) -> ok_tuple(gmser_api_encoder:safe_decode(account_pubkey, PK));
|
||||
valid_(seq, Seq) -> pos_integer(Seq);
|
||||
valid_(nonce, Nonce) -> pos_integer(Nonce);
|
||||
valid_(target, T) -> pos_integer(T);
|
||||
valid_(edge_bits, E) -> pos_integer(E);
|
||||
valid_(pos_int, I) -> pos_integer(I);
|
||||
valid_(string, S) -> is_binary(S);
|
||||
valid_(boolean, B) -> is_boolean(B);
|
||||
valid_(contract, Id) -> ok_tuple(gmser_api_encoder:safe_defode(contract_pubkey, Id));
|
||||
valid_(contract, Id) -> ok_tuple(gmser_api_encoder:safe_decode(contract_pubkey, Id));
|
||||
valid_(type, T) -> lists:member(T, [miner, monitor]);
|
||||
valid_(solutions, S) -> lists:all(fun(#{nonce := N, evidence := Evd}) ->
|
||||
valid_(pos_int, N),
|
||||
@ -336,3 +338,8 @@ ok_tuple(V) ->
|
||||
|
||||
pos_integer(I) ->
|
||||
is_integer(I) andalso I >= 0.
|
||||
|
||||
to_atom(A) when is_atom(A) ->
|
||||
A;
|
||||
to_atom(B) when is_binary(B) ->
|
||||
binary_to_existing_atom(B, utf8).
|
||||
|
Loading…
x
Reference in New Issue
Block a user