diff options
| author | Robby Zambito <contact@robbyzambito.me> | 2026-01-24 18:50:22 -0500 |
|---|---|---|
| committer | Robby Zambito <contact@robbyzambito.me> | 2026-01-24 18:54:01 -0500 |
| commit | cf365673b5c78de4a3811cd35a79e9986123354a (patch) | |
| tree | 471b761b426b1fa3b7ede57bb067f00eb7945352 | |
| parent | 16fd65e281776bd27d9aefdcfb39fa8b8f7a9fba (diff) | |
Retry timing
Wait 2 minutes if trying for initial connect. Wait 10 minutes if
connection to sentinel has timed out
| -rw-r--r-- | src/main.zig | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/main.zig b/src/main.zig index 2cbcb24..25ead5e 100644 --- a/src/main.zig +++ b/src/main.zig @@ -126,6 +126,8 @@ pub fn main(init: std.process.Init) !void { return; } + var retry_seconds: u16 = 120; + if (flags.connect != null) { reconnect: while (true) { log.debug("Starting connection", .{}); @@ -133,14 +135,22 @@ pub fn main(init: std.process.Init) !void { var init_con_buf: [SaprusClient.max_payload_len]u8 = undefined; var w: Writer = .fixed(&init_con_buf); try w.print("{b64}", .{flags.connect.?}); - var connection = try client.connect(init.io, w.buffered()); + var connection = client.connect(init.io, w.buffered()) catch { + try init.io.sleep(.fromSeconds(retry_seconds), .boot); + continue; + }; defer connection.deinit(); + retry_seconds = 600; + log.debug("Connection started", .{}); while (true) { var res_buf: [2048]u8 = undefined; - const next = connection.next(init.io, &res_buf) catch continue :reconnect; + const next = connection.next(init.io, &res_buf) catch { + try init.io.sleep(.fromSeconds(retry_seconds), .boot); + continue :reconnect; + }; const b64d = std.base64.standard.Decoder; var connection_payload_buf: [2048]u8 = undefined; |
