╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ────╮ │src/serve.zig│ ╰─────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │318 fn run(conn: @This()) void { │ │319 defer conn.stream.close(conn.io); │ │293 - handleSshGitConnection(repo_kind, any_repo_opts, conn.io, conn.allocator, conn.repo_root, conn.stream) catch |request_err| { │ │320 + handleSshGitConnection(repo_kind, any_repo_opts, conn.io, conn.allocator, conn.repo_root_path, conn.stream) catch |request_err| {│ │321 logError(conn.err, "ssh request failed: {s}\n", .{@errorName(request_err)}); │ │322 }; │ │323 } │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────╮ │326 ctx.tasks.async(ctx.io, Connection.run, .{Connection{│ │327 .io = ctx.io, │ │328 .allocator = ctx.allocator, │ │302 - .repo_root = ctx.repo_root, │ │329 + .repo_root_path = ctx.repo_root_path, │ │330 .stream = stream, │ │331 .err = ctx.err, │ │332 }}); │ ╰──────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────╮ │337 tasks.async(io, Listener.run, .{Listener{│ │338 .io = io, │ │339 .allocator = allocator, │ │313 - .repo_root = repo_root, │ │340 + .repo_root_path = repo_root_path, │ │341 .net_server = net_server, │ │342 .tasks = tasks, │ │343 .err = err, │ ╰──────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────╮ │349 comptime any_repo_opts: rp.AnyRepoOpts(repo_kind), │ │350 io: std.Io, │ │351 allocator: std.mem.Allocator, │ │325 - repo_root: []const u8, │ │352 + repo_root_path: []const u8, │ │353 stream: std.Io.net.Stream, │ │354 ) !void { │ │355 var send_buffer = [_]u8{0} ** any_repo_opts.net_buffer_size;│ ╰─────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │360 const request = try readSshRequest(allocator, &reader.interface); │ │361 defer request.deinit(allocator); │ │362 │ │336 - const repo_path = try resolveSshRepoPath(allocator, repo_root, request.repo); │ │363 + const repo_path = try resolveSshRepoPath(allocator, repo_root_path, request.repo); │ │364 defer allocator.free(repo_path); │ │365 │ │339 - if (!isSubPath(repo_root, repo_path)) return error.Forbidden; │ │366 + if (!isSubPath(repo_root_path, repo_path)) return error.Forbidden; │ │367 │ │368 try openRepoAndServe(repo_kind, any_repo_opts, io, allocator, repo_path, request.service == .receive_pack, SshGitService{│ │369 .reader = &reader.interface, │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────╮ │530 │ │531 fn resolveSshRepoPath( │ │532 allocator: std.mem.Allocator, │ │506 - repo_root: []const u8, │ │533 + repo_root_path: []const u8, │ │534 repo: []const u8, │ │535 ) ![]const u8 { │ │536 if (std.fs.path.isAbsolute(repo)) {│ ╰────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────╮ │537 return try std.fs.path.resolve(allocator, &.{repo}); │ │538 } │ │512 - return try std.fs.path.resolve(allocator, &.{ repo_root, repo }); │ │539 + return try std.fs.path.resolve(allocator, &.{ repo_root_path, repo });│ │540 } │ │541 │ │542 fn parseListenAddress(value: []const u8) !ListenAddress { │ ╰───────────────────────────────────────────────────────────────────────────────╯