╭ changed ───────────╮ │src/serve_common.zig│ ╰────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────╮ │45 │ │46 // accept connections forever, spawning `handleConn(context, stream)` as a task│ │47 // for each. the handler owns the stream (it closes it). `name` labels accept │ │48 -// errors in the log. shared by the http, ssh, and web ui listeners. │ │48 +// errors in the log. shared by the ssh and web ui listeners. concurrent, since│ │49 +// async runs inline once the cpu-sized pool is busy. │ │50 pub fn runListener( │ │51 io: std.Io, │ │52 net_server: *std.Io.net.Server, │ ╰───────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │82 logError(self.io, self.err, "{s} accept failed: {s}\n", .{ self.name, @errorName(accept_err) }); │ │83 continue; │ │84 }; │ │84 - self.tasks.async(self.io, Conn.run, .{Conn{ .context = self.context, .stream = stream }}); │ │85 + self.tasks.concurrent(self.io, Conn.run, .{Conn{ .context = self.context, .stream = stream }}) catch |spawn_err| {│ │86 + logError(self.io, self.err, "{s} connection spawn failed: {s}\n", .{ self.name, @errorName(spawn_err) }); │ │87 + stream.close(self.io); │ │88 + }; │ │89 } │ │90 } │ │91 }; │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────╮ │92 │ │89 - tasks.async(io, Listener.run, .{Listener{ │ │93 + tasks.concurrent(io, Listener.run, .{Listener{│ │94 .io = io, │ │95 .net_server = net_server, │ │96 .tasks = tasks, │ ╰──────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ 97 .err = err, │ │ 98 .name = name, │ │ 99 .context = context, │ │ 96 - }}); │ │100 + }}) catch |spawn_err| { │ │101 + logError(io, err, "{s}: listener spawn failed: {s}\n", .{ name, @errorName(spawn_err) });│ │102 + }; │ │103 } │ │104 │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯