| author | |
| committer | |
| log | 888bf35ab0bd6a248c2bcccd0dc670b33c328641 |
| tree | 6817da411c14f8bca1e93265277fa43df143c473 |
| parent | dac7ae1e438bcd9d5051fc53874002ee06278466 |
/etc/resolv.conf might have IPv6 addresses with scope in it, so this is
needed.4 files changed, 13 insertions(+), 10 deletions(-)
lib/std/Io.zig+1-1| ... | ... | @@ -668,7 +668,7 @@ pub const VTable = struct { |
| 668 | 668 | netRead: *const fn (?*anyopaque, src: net.Stream, data: [][]u8) net.Stream.Reader.Error!usize, |
| 669 | 669 | netWrite: *const fn (?*anyopaque, dest: net.Stream, header: []const u8, data: []const []const u8, splat: usize) net.Stream.Writer.Error!usize, |
| 670 | 670 | netClose: *const fn (?*anyopaque, stream: net.Stream) void, |
| 671 | netInterfaceNameResolve: *const fn (?*anyopaque, net.Interface.Name) net.Interface.Name.ResolveError!net.Interface, | |
| 671 | netInterfaceNameResolve: *const fn (?*anyopaque, *const net.Interface.Name) net.Interface.Name.ResolveError!net.Interface, | |
| 672 | 672 | netInterfaceName: *const fn (?*anyopaque, net.Interface) net.Interface.NameError!net.Interface.Name, |
| 673 | 673 | }; |
| 674 | 674 |
lib/std/Io/Threaded.zig+4-1| ... | ... | @@ -1124,7 +1124,10 @@ fn netClose(userdata: ?*anyopaque, stream: Io.net.Stream) void { |
| 1124 | 1124 | return net_stream.close(); |
| 1125 | 1125 | } |
| 1126 | 1126 | |
| 1127 | fn netInterfaceNameResolve(userdata: ?*anyopaque, name: Io.net.Interface.Name) Io.net.Interface.Name.ResolveError!Io.net.Interface { | |
| 1127 | fn netInterfaceNameResolve( | |
| 1128 | userdata: ?*anyopaque, | |
| 1129 | name: *const Io.net.Interface.Name, | |
| 1130 | ) Io.net.Interface.Name.ResolveError!Io.net.Interface { | |
| 1128 | 1131 | const pool: *Pool = @ptrCast(@alignCast(userdata)); |
| 1129 | 1132 | try pool.checkCancel(); |
| 1130 | 1133 |
lib/std/Io/net.zig+1-1| ... | ... | @@ -538,7 +538,7 @@ pub const Interface = struct { |
| 538 | 538 | } || Io.UnexpectedError || Io.Cancelable; |
| 539 | 539 | |
| 540 | 540 | /// Corresponds to "if_nametoindex" in libc. |
| 541 | pub fn resolve(n: []const u8, io: Io) ResolveError!Interface { | |
| 541 | pub fn resolve(n: *const Name, io: Io) ResolveError!Interface { | |
| 542 | 542 | return io.vtable.netInterfaceNameResolve(io.userdata, n); |
| 543 | 543 | } |
| 544 | 544 | }; |
lib/std/Io/net/HostName.zig+7-7| ... | ... | @@ -542,7 +542,7 @@ pub const ResolvConf = struct { |
| 542 | 542 | error.NotDir, |
| 543 | 543 | error.AccessDenied, |
| 544 | 544 | => { |
| 545 | try addNumeric(&rc, "127.0.0.1", 53); | |
| 545 | try addNumeric(&rc, io, "127.0.0.1", 53); | |
| 546 | 546 | return rc; |
| 547 | 547 | }, |
| 548 | 548 | |
| ... | ... | @@ -552,7 +552,7 @@ pub const ResolvConf = struct { |
| 552 | 552 | |
| 553 | 553 | var line_buf: [512]u8 = undefined; |
| 554 | 554 | var file_reader = file.reader(io, &line_buf); |
| 555 | parse(&rc, &file_reader.interface) catch |err| switch (err) { | |
| 555 | parse(&rc, io, &file_reader.interface) catch |err| switch (err) { | |
| 556 | 556 | error.ReadFailed => return file_reader.err.?, |
| 557 | 557 | else => |e| return e, |
| 558 | 558 | }; |
| ... | ... | @@ -562,7 +562,7 @@ pub const ResolvConf = struct { |
| 562 | 562 | const Directive = enum { options, nameserver, domain, search }; |
| 563 | 563 | const Option = enum { ndots, attempts, timeout }; |
| 564 | 564 | |
| 565 | fn parse(rc: *ResolvConf, reader: *Io.Reader) !void { | |
| 565 | fn parse(rc: *ResolvConf, io: Io, reader: *Io.Reader) !void { | |
| 566 | 566 | while (reader.takeSentinel('\n')) |line_with_comment| { |
| 567 | 567 | const line = line: { |
| 568 | 568 | var split = std.mem.splitScalar(u8, line_with_comment, '#'); |
| ... | ... | @@ -588,7 +588,7 @@ pub const ResolvConf = struct { |
| 588 | 588 | }, |
| 589 | 589 | .nameserver => { |
| 590 | 590 | const ip_txt = line_it.next() orelse continue; |
| 591 | try addNumeric(rc, ip_txt, 53); | |
| 591 | try addNumeric(rc, io, ip_txt, 53); | |
| 592 | 592 | }, |
| 593 | 593 | .domain, .search => { |
| 594 | 594 | const rest = line_it.rest(); |
| ... | ... | @@ -602,13 +602,13 @@ pub const ResolvConf = struct { |
| 602 | 602 | } |
| 603 | 603 | |
| 604 | 604 | if (rc.nameservers_len == 0) { |
| 605 | try addNumeric(rc, "127.0.0.1", 53); | |
| 605 | try addNumeric(rc, io, "127.0.0.1", 53); | |
| 606 | 606 | } |
| 607 | 607 | } |
| 608 | 608 | |
| 609 | fn addNumeric(rc: *ResolvConf, name: []const u8, port: u16) !void { | |
| 609 | fn addNumeric(rc: *ResolvConf, io: Io, name: []const u8, port: u16) !void { | |
| 610 | 610 | assert(rc.nameservers_len < rc.nameservers_buffer.len); |
| 611 | rc.nameservers_buffer[rc.nameservers_len] = try .parse(name, port); | |
| 611 | rc.nameservers_buffer[rc.nameservers_len] = try .resolve(io, name, port); | |
| 612 | 612 | rc.nameservers_len += 1; |
| 613 | 613 | } |
| 614 | 614 |