From 3c5f34d5c2dafb4829becada1f0c6fb09d33ea79 Mon Sep 17 00:00:00 2001 From: Robby Zambito Date: Sat, 24 Jan 2026 20:56:37 -0500 Subject: Set timeouts instead of sleeping --- src/RawSocket.zig | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/RawSocket.zig') diff --git a/src/RawSocket.zig b/src/RawSocket.zig index f790e4e..71b4e1c 100644 --- a/src/RawSocket.zig +++ b/src/RawSocket.zig @@ -72,10 +72,6 @@ pub fn init() !RawSocket { const bind_ret = std.os.linux.bind(socket, @ptrCast(&sockaddr_ll), @sizeOf(@TypeOf(sockaddr_ll))); if (bind_ret != 0) return error.BindError; - const timeout: std.os.linux.timeval = .{ .sec = 60 * if (is_debug) 1 else 10, .usec = 0 }; - const timeout_ret = std.os.linux.setsockopt(socket, std.os.linux.SOL.SOCKET, std.os.linux.SO.RCVTIMEO, @ptrCast(&timeout), @sizeOf(@TypeOf(timeout))); - if (timeout_ret != 0) return error.SetTimeoutError; - return .{ .fd = socket, .sockaddr_ll = sockaddr_ll, @@ -83,6 +79,12 @@ pub fn init() !RawSocket { }; } +pub fn setTimeout(self: *RawSocket, sec: isize, usec: i64) !void { + const timeout: std.os.linux.timeval = .{ .sec = sec, .usec = usec }; + const timeout_ret = std.os.linux.setsockopt(self.fd, std.os.linux.SOL.SOCKET, std.os.linux.SO.RCVTIMEO, @ptrCast(&timeout), @sizeOf(@TypeOf(timeout))); + if (timeout_ret != 0) return error.SetTimeoutError; +} + pub fn deinit(self: *RawSocket) void { _ = std.os.linux.close(self.fd); self.* = undefined; -- cgit