diff options
author | 2022-02-04 20:50:21 -0800 | |
---|---|---|
committer | 2022-02-04 20:50:21 -0800 | |
commit | dabcac2e96e67356e89e7fb57f6acc62cd6a47a9 (patch) | |
tree | 53dc7668c5a2d97dd983711973f99c4df312f80f /src/network_thread.zig | |
parent | c03b7a6f19044e37985128a9e1751a8dc82f13fc (diff) | |
download | bun-dabcac2e96e67356e89e7fb57f6acc62cd6a47a9.tar.gz bun-dabcac2e96e67356e89e7fb57f6acc62cd6a47a9.tar.zst bun-dabcac2e96e67356e89e7fb57f6acc62cd6a47a9.zip |
Several reliability improvements to HTTP
Diffstat (limited to 'src/network_thread.zig')
-rw-r--r-- | src/network_thread.zig | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/src/network_thread.zig b/src/network_thread.zig index 0a39f574a..ba1db6524 100644 --- a/src/network_thread.zig +++ b/src/network_thread.zig @@ -47,21 +47,26 @@ const CachedAddressList = struct { pub const AddressListCache = std.HashMap(u64, CachedAddressList, IdentityContext(u64), 80); pub var address_list_cached: AddressListCache = undefined; -pub fn getAddressList(allocator: std.mem.Allocator, name: []const u8, port: u16) !*CachedAddressList { - const hash = CachedAddressList.hash(name, port); - const now = @intCast(u64, @maximum(0, std.time.milliTimestamp())); - if (address_list_cached.getPtr(hash)) |cached| { - if (cached.expire_after > now) { - return cached; - } +pub fn getAddressList(allocator: std.mem.Allocator, name: []const u8, port: u16) !*std.net.AddressList { + // const hash = CachedAddressList.hash(name, port); + // const now = @intCast(u64, @maximum(0, std.time.milliTimestamp())); + // if (address_list_cached.getPtr(hash)) |cached| { + // if (cached.expire_after > now) { + // return cached; + // } - cached.address_list.deinit(); - } + // cached.address_list.deinit(); + // } + + return try std.net.getAddressList(allocator, name, port); +} - const address_list = try std.net.getAddressList(allocator, name, port); - var entry = try address_list_cached.getOrPut(hash); - entry.value_ptr.* = CachedAddressList.init(hash, address_list, now); - return entry.value_ptr; +pub var has_warmed = false; +pub fn warmup() !void { + if (has_warmed) return; + has_warmed = true; + try init(); + global.pool.forceSpawn(); } pub fn init() !void { |