Add read timeout for failed address
This commit is contained in:
parent
db1fbeb92a
commit
fef2821364
1 changed files with 7 additions and 1 deletions
|
@ -10,6 +10,7 @@ const MDNSError = error{
|
||||||
NotResponse,
|
NotResponse,
|
||||||
NoMatchingAddress,
|
NoMatchingAddress,
|
||||||
AddressBadFormat,
|
AddressBadFormat,
|
||||||
|
SocketSetTimeoutFail,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn get_mdns(domain: util.Domain, ip_info: util.IPInfo) !util.IP {
|
pub fn get_mdns(domain: util.Domain, ip_info: util.IPInfo) !util.IP {
|
||||||
|
@ -28,6 +29,11 @@ fn get_mdns_socket(ip_info: util.IPInfo) !socket {
|
||||||
if (sock == -1) {
|
if (sock == -1) {
|
||||||
return MDNSError.SocketInitFail;
|
return MDNSError.SocketInitFail;
|
||||||
}
|
}
|
||||||
|
const timeout: std.c.timeval = .{ .tv_sec = 1, .tv_usec = 0 };
|
||||||
|
if (std.c.setsockopt(sock, std.c.SOL.SOCKET, std.c.SO.RCVTIMEO, &timeout, @intCast(@sizeOf(std.c.timeval))) == -1) {
|
||||||
|
std.debug.print("{d}\n", .{std.c._errno().*});
|
||||||
|
return MDNSError.SocketSetTimeoutFail;
|
||||||
|
}
|
||||||
return sock;
|
return sock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,7 +91,7 @@ fn send_query(domain: util.Domain, ip_info: util.IPInfo) !socket {
|
||||||
var buff = [_]u8{0x00} ** MSG_BUFF_SIZE;
|
var buff = [_]u8{0x00} ** MSG_BUFF_SIZE;
|
||||||
|
|
||||||
const n = try construct_mdns_query(domain, ip_info, &buff);
|
const n = try construct_mdns_query(domain, ip_info, &buff);
|
||||||
if (std.c.sendto(sock, &buff, n, 0, &addr.any, addr.getOsSockLen()) == -1) {
|
if (std.c.sendto(sock, &buff, n, std.c.MSG.DONTWAIT, &addr.any, addr.getOsSockLen()) == -1) {
|
||||||
return MDNSError.UDPSendFail;
|
return MDNSError.UDPSendFail;
|
||||||
}
|
}
|
||||||
return sock;
|
return sock;
|
||||||
|
|
Loading…
Reference in a new issue