╭ changed ─────────────────╮ │src/serve_ssh_protocol.zig│ ╰──────────────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭──────────╮ │← previous│ ╰──────────╯ ╭─────────────────────────────────────────────────────────────────────────────────╮ │2095 } │ │2096 │ │2097 fn parseChannelId(packet: []const u8, expected_channel: u32) !void { │ │2217 - if (packet.len < 1) return error.EmptyPacket; │ │2098 var r = std.Io.Reader.fixed(packet[1..]); │ │2099 const recipient_channel = try r.takeInt(u32, .big); │ │2100 if (recipient_channel != expected_channel) return error.UnknownChannel;│ ╰─────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────╮ │2109 if (ch.local_window >= budget / 2) return; │ │2110 const add = budget - ch.local_window; │ │2111 ch.local_window += add; │ │2232 - var adj: std.ArrayList(u8) = .empty; │ │2233 - defer adj.deinit(conn.allocator); │ │2234 - try adj.append(conn.allocator, SSH_MSG_CHANNEL_WINDOW_ADJUST); │ │2235 - try writeU32(&adj, conn.allocator, ch.remote_id); │ │2236 - try writeU32(&adj, conn.allocator, add); │ │2237 - try conn.writePacket(&.{adj.items}); │ │2112 + var packet: [9]u8 = undefined; │ │2113 + packet[0] = SSH_MSG_CHANNEL_WINDOW_ADJUST; │ │2114 + std.mem.writeInt(u32, packet[1..5], ch.remote_id, .big); │ │2115 + std.mem.writeInt(u32, packet[5..9], add, .big); │ │2116 + try conn.writePacket(&.{&packet}); │ │2117 } │ │2118 │ │2119 pub fn writeU32(buf: *std.ArrayList(u8), allocator: std.mem.Allocator, value: u32) !void {│ ╰────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────╮ │2155 var reader = std.Io.Reader.fixed(encoded_writer.buffered());│ │2156 var output: [256]u8 = undefined; │ │2157 var writer = std.Io.Writer.fixed(&output); │ │2158 + var idle = IdleState{}; │ │2159 var conn = Conn{ │ │2160 .io = io, │ │2161 .allocator = allocator, │ ╰──────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────╮ │2164 .cs_cipher = Cipher.init(&key, 0), │ │2165 .sc_cipher = Cipher.init(&key, 0), │ │2166 .rekey = undefined, │ │2167 + .idle = &idle, │ │2168 }; │ │2169 const Handler = struct { │ │2170 pub fn handleSession(_: *@This(), _: *SessionCtx, _: Request) !void {│ ╰───────────────────────────────────────────────────────────────────────────────────╯