diff options
Diffstat (limited to 'src')
| -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; |
