fix heartbeat
This commit is contained in:
parent
9b70cadf64
commit
d506ec98d5
@ -100,7 +100,7 @@ code_change(_OldVsn, State, _Extra) ->
|
||||
|
||||
-spec send_heartbeat(#state{}) -> ok.
|
||||
send_heartbeat(#state{socket = Socket, host = Host, port = Port, uuid = UUID, heartbeat_secret = HeartbeatSecret}) ->
|
||||
Packet = heartbeat_packet(UUID, HeartbeatSecret),
|
||||
Packet = heartbeat_packet_iodata(UUID, HeartbeatSecret),
|
||||
case gen_udp:send(Socket, Host, Port, Packet) of
|
||||
ok ->
|
||||
ok;
|
||||
@ -109,11 +109,11 @@ send_heartbeat(#state{socket = Socket, host = Host, port = Port, uuid = UUID, he
|
||||
ok
|
||||
end.
|
||||
|
||||
-spec heartbeat_packet(binary(), binary()) -> binary().
|
||||
heartbeat_packet(UUID, HeartbeatSecret) when is_binary(UUID), is_binary(HeartbeatSecret) ->
|
||||
-spec heartbeat_packet_iodata(binary(), binary()) -> iodata().
|
||||
heartbeat_packet_iodata(UUID, HeartbeatSecret) when is_binary(UUID), is_binary(HeartbeatSecret) ->
|
||||
UUIDLen = byte_size(UUID),
|
||||
Timestamp = efka_util:timestamp(),
|
||||
Nonce = crypto:strong_rand_bytes(?HEARTBEAT_NONCE_BYTES),
|
||||
Payload = <<?HEARTBEAT_VERSION:8, UUIDLen:16, UUID:UUIDLen/binary, Timestamp:64/unsigned-big, Nonce/binary>>,
|
||||
Mac = crypto:mac(hmac, sha256, HeartbeatSecret, Payload),
|
||||
<<Payload/binary, Mac/binary>>.
|
||||
[Payload, Mac].
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user