fix: reject oversized checkout diffs (#2488)
* fix: reject oversized checkout diffs * fix(diff): keep large previews from disconnecting clients The physical socket limit is an OOM backstop, not a frame-size contract. Bound structured diff construction incrementally and report oversized previews without closing the client's socket. * fix(app): preserve oversized diff state * fix(diff): stay within relay frame limit --------- Co-authored-by: Mohamed Boudra <boudra.moha@gmail.com>
This commit is contained in:
co-authored by
Mohamed Boudra
parent
16bbead5a4
commit
9e5accee3c
@@ -119,6 +119,7 @@ import {
|
||||
type InlineReviewActions,
|
||||
} from "@/review";
|
||||
import { usePublishWorkingDiffAttachment, useWorkingDiff } from "@/git/use-working-diff";
|
||||
import { DiffTooLargeState } from "@/git/diff-too-large-state";
|
||||
|
||||
export type { GitActionId, GitAction, GitActions } from "@/git/policy";
|
||||
|
||||
@@ -1755,6 +1756,7 @@ interface DiffBodyContentProps {
|
||||
notGit: boolean;
|
||||
isDiffLoading: boolean;
|
||||
diffErrorMessage: string | null;
|
||||
diffTooLarge: boolean;
|
||||
hasChanges: boolean;
|
||||
emptyMessage: string;
|
||||
children: ReactElement;
|
||||
@@ -1768,6 +1770,7 @@ function DiffBodyContent({
|
||||
notGit,
|
||||
isDiffLoading,
|
||||
diffErrorMessage,
|
||||
diffTooLarge,
|
||||
hasChanges,
|
||||
emptyMessage,
|
||||
children,
|
||||
@@ -1803,6 +1806,9 @@ function DiffBodyContent({
|
||||
</View>
|
||||
);
|
||||
}
|
||||
if (diffTooLarge) {
|
||||
return <DiffTooLargeState />;
|
||||
}
|
||||
if (diffErrorMessage) {
|
||||
return (
|
||||
<View style={styles.errorContainer}>
|
||||
@@ -2693,6 +2699,7 @@ export function GitDiffPane({
|
||||
selectBase: handleSelectBase,
|
||||
files,
|
||||
diffPayloadError,
|
||||
diffTooLarge,
|
||||
isDiffLoading,
|
||||
reviewActions,
|
||||
reviewAttachment,
|
||||
@@ -2855,6 +2862,7 @@ export function GitDiffPane({
|
||||
notGit={notGit}
|
||||
isDiffLoading={isDiffLoading}
|
||||
diffErrorMessage={diffErrorMessage}
|
||||
diffTooLarge={diffTooLarge}
|
||||
hasChanges={hasChanges}
|
||||
emptyMessage={emptyMessage}
|
||||
checkingRepositoryLabel={t("workspace.git.diff.checkingRepository")}
|
||||
|
||||
Reference in New Issue
Block a user