From d7498b3d07b2bfa886576787bfe7519695ad907c Mon Sep 17 00:00:00 2001 From: Adam Cook Date: Mon, 20 Oct 2025 17:31:18 -0400 Subject: [PATCH] Make sure the update callback timeout is valid - erlang:send_after crashes if provided a negative value --- src/aws_credentials.erl | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/aws_credentials.erl b/src/aws_credentials.erl index db746ca..e9b5dd0 100644 --- a/src/aws_credentials.erl +++ b/src/aws_credentials.erl @@ -221,9 +221,15 @@ setup_update_callback(Expires) when is_binary(Expires) -> setup_update_callback(Expires) when is_integer(Expires) -> setup_callback(Expires - ?ALERT_BEFORE_EXPIRY). --spec setup_callback(pos_integer()) -> reference(). +-spec setup_callback(integer()) -> reference(). setup_callback(Seconds) -> - erlang:send_after(Seconds * 1000, self(), refresh_credentials). + erlang:send_after(timeout(Seconds) * 1000, self(), refresh_credentials). + +-spec timeout(integer()) -> pos_integer(). +timeout(Seconds) when is_integer(Seconds), Seconds >= 0 -> + Seconds; +timeout(_) -> + ?RETRY_DELAY. -spec seconds_until_timestamp(binary()) -> integer(). seconds_until_timestamp(Timestamp) ->