Changes
1 changed files (+47/-0)
-
-
@@ -295,6 +295,7 @@ errdefer servers.deinit();for (0..udp_send_tries) |_| { try sendDiscoveryQuery(sockfd); try broadcastDiscoveryQuery(sockfd); while (true) { std.log.debug("Waiting for UDP message...", .{});
-
@@ -355,6 +356,7 @@ defer std.posix.close(sockfd);for (0..udp_send_tries) |_| { try sendDiscoveryQuery(sockfd); try broadcastDiscoveryQuery(sockfd); while (true) { std.log.debug("Waiting for UDP message...", .{});
-
@@ -478,6 +480,17 @@fn sendDiscoveryQuery(sockfd: std.posix.socket_t) !void { std.log.debug("Sending server discovery message to {}", .{udp_dst}); std.posix.setsockopt( sockfd, std.posix.SOL.SOCKET, std.posix.SO.BROADCAST, &std.mem.toBytes(@as(c_int, 0)), ) catch |err| return switch (err) { std.posix.SetSockOptError.PermissionDenied => ScanError.SocketPermissionDenied, std.posix.SetSockOptError.SystemResources => ScanError.OutOfMemory, else => ScanError.SocketError, }; _ = std.posix.sendto( sockfd, sood.discovery.Query.prebuilt,
-
@@ -486,6 +499,40 @@ &udp_dst.any,udp_dst.getOsSockLen(), ) catch |err| { std.log.err("Failed to send discovery message: {s}", .{@errorName(err)}); return switch (err) { std.posix.SendToError.NetworkSubsystemFailed, std.posix.SendToError.NetworkUnreachable, => ScanError.NetworkUnavailable, else => ScanError.SocketError, }; }; } fn broadcastDiscoveryQuery(sockfd: std.posix.socket_t) !void { std.log.debug("Broadcasting server discovery message", .{}); std.posix.setsockopt( sockfd, std.posix.SOL.SOCKET, std.posix.SO.BROADCAST, &std.mem.toBytes(@as(c_int, 1)), ) catch |err| return switch (err) { std.posix.SetSockOptError.PermissionDenied => { std.log.warn("No permission to broadcast UDP message, skipping", .{}); return; }, std.posix.SetSockOptError.SystemResources => ScanError.OutOfMemory, else => ScanError.SocketError, }; _ = std.posix.sendto( sockfd, sood.discovery.Query.prebuilt, 0, &udp_dst.any, udp_dst.getOsSockLen(), ) catch |err| { std.log.err("Failed to broadcast discovery message: {s}", .{@errorName(err)}); return switch (err) { std.posix.SendToError.NetworkSubsystemFailed, std.posix.SendToError.NetworkUnreachable,
-