8000 feat: return better error if file size is too big to upload · coder/coder@47e3480 · GitHub
[go: up one dir, main page]

Skip to content

Commit 47e3480

Browse files
committed
feat: return better error if file size is too big to upload
1 parent 555ea64 commit 47e3480

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

provisionersdk/archive.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ func Tar(w io.Writer, directory string, limit int64) error {
5454
)
5555
}
5656

57+
fileTooBigError := xerrors.Errorf("Archive too big. Must be <= %d bytes", limit)
5758
err = filepath.Walk(directory, func(file string, fileInfo os.FileInfo, err error) error {
5859
if err != nil {
5960
return err
@@ -95,6 +96,10 @@ func Tar(w io.Writer, directory string, limit int64) error {
9596
if !fileInfo.Mode().IsRegular() {
9697
return nil
9798
}
99+
// Before we even open the file, check if it is going to exceed our limit.
100+
if fileInfo.Size()+totalSize >= limit {
101+
return fileTooBigError
102+
}
98103
data, err := os.Open(file)
99104
if err != nil {
100105
return err
@@ -106,7 +111,7 @@ func Tar(w io.Writer, directory string, limit int64) error {
106111
}
107112
totalSize += wrote
108113
if limit != 0 && totalSize >= limit {
109-
return xerrors.Errorf("Archive too big. Must be <= %d bytes", limit)
114+
return fileTooBigError
110115
}
111116
return data.Close()
112117
})

0 commit comments

Comments
 (0)
0