╭ changed ────────╮ │src/serve_ssh.zig│ ╰─────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭────────────────────────────────────────────────────────────────────────────────╮ │34 web_url: []const u8, │ │35 ssh_url: ?[]const u8, │ │36 git_ssh_prefix: []const u8, │ │37 + // the size a pushed repo's db may grow to, or null for no limit │ │38 + max_repo_size: ?u64, │ │39 err: *std.Io.Writer, │ │40 │ │41 /// returning without an exit leaves the protocol layer to send status 0│ ╰────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │420 .protected_branches = pusher.protected_branches, │ │421 .locked_branches = pusher.locked_branches, │ │422 .pseudo_ref = .{ .name = push.clear_undo_ref, .deletable = pusher.owner }, │ │421 - }, pusher.author, &pusher.user_id, handler.server, handler.err, sess), │ │423 + }, pusher.author, &pusher.user_id, handler.server, handler.max_repo_size, handler.err, sess),│ │424 }, │ │425 } │ │426 } │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │458 var repo = try rp.Repo(.xit, any_repo_opts.toRepoOptsWithHash(kind)).open(io, allocator, .{ .path = repo_path }); │ │459 defer repo.deinit(io, allocator); │ │460 // stateless since the advertisement already went out │ │459 - try push.receivePackAndConsume(repo.self_repo_opts, io, allocator, &repo, reader, writer, .{ .protocol_version = protocol_version, .is_stateless = true, .pseudo_ref = .{ .name = push.clear_undo_ref, .deletable = true } }, creator.owner, &creator.owner_id, handler.server, handler.err, sess); │ │461 + try push.receivePackAndConsume(repo.self_repo_opts, io, allocator, &repo, reader, writer, .{ .protocol_version = protocol_version, .is_stateless = true, .pseudo_ref = .{ .name = push.clear_undo_ref, .deletable = true } }, creator.owner, &creator.owner_id, handler.server, handler.max_repo_size, handler.err, sess);│ │462 }, │ │463 } │ │464 } │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │541 var target_repo = rp.Repo(.xit, repo.self_repo_opts).open(io, allocator, .{ .path = target_path }) catch │ │542 return writeError(sess, "repo not found or has the wrong hash"); │ │543 defer target_repo.deinit(io, allocator); │ │542 - try push.receiveFork(repo.self_repo_opts, io, allocator, repo, &target_repo, handler.server, &route.id, author, timestamp, reader, writer, handler.err, sess); │ │544 + try push.receiveFork(repo.self_repo_opts, io, allocator, repo, &target_repo, handler.server, &route.id, author, timestamp, reader, writer, handler.max_repo_size, handler.err, sess);│ │545 }, │ │546 } │ │547 } │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯