aboutsummaryrefslogtreecommitdiff
path: root/src/network_thread.zig
diff options
context:
space:
mode:
authorGravatar Jarred SUmner <jarred@jarredsumner.com> 2022-02-04 20:50:21 -0800
committerGravatar Jarred SUmner <jarred@jarredsumner.com> 2022-02-04 20:50:21 -0800
commitdabcac2e96e67356e89e7fb57f6acc62cd6a47a9 (patch)
tree53dc7668c5a2d97dd983711973f99c4df312f80f /src/network_thread.zig
parentc03b7a6f19044e37985128a9e1751a8dc82f13fc (diff)
downloadbun-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.zig31
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 {