fix
This commit is contained in:
parent
bd0f2a73f0
commit
78f174018e
2 changed files with 16 additions and 7 deletions
|
|
@ -1844,7 +1844,7 @@ type createGifCatalogEntryAPIRequest struct {
|
||||||
|
|
||||||
func (s *server) handleCreateGifCatalogEntryAPI(w http.ResponseWriter, r *http.Request) {
|
func (s *server) handleCreateGifCatalogEntryAPI(w http.ResponseWriter, r *http.Request) {
|
||||||
defer r.Body.Close()
|
defer r.Body.Close()
|
||||||
r.Body = http.MaxBytesReader(w, r.Body, 21<<20)
|
r.Body = http.MaxBytesReader(w, r.Body, domain.MaxGifCatalogUploadSize+(1<<20))
|
||||||
if err := r.ParseMultipartForm(1 << 20); err != nil {
|
if err := r.ParseMultipartForm(1 << 20); err != nil {
|
||||||
writeAPIError(w, http.StatusBadRequest, "invalid multipart form: "+err.Error())
|
writeAPIError(w, http.StatusBadRequest, "invalid multipart form: "+err.Error())
|
||||||
return
|
return
|
||||||
|
|
@ -1865,8 +1865,8 @@ func (s *server) handleCreateGifCatalogEntryAPI(w http.ResponseWriter, r *http.R
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer file.Close()
|
defer file.Close()
|
||||||
data, err := io.ReadAll(io.LimitReader(file, (20<<20)+1))
|
data, err := io.ReadAll(io.LimitReader(file, domain.MaxGifCatalogUploadSize+1))
|
||||||
if err != nil || len(data) == 0 || len(data) > 20<<20 {
|
if err != nil || len(data) == 0 || int64(len(data)) > domain.MaxGifCatalogUploadSize {
|
||||||
writeAPIError(w, http.StatusBadRequest, "gif file is empty or too large")
|
writeAPIError(w, http.StatusBadRequest, "gif file is empty or too large")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,10 +27,19 @@ const (
|
||||||
// response -- mirrors MaxBotInlineResults, the TL-level cap the client
|
// response -- mirrors MaxBotInlineResults, the TL-level cap the client
|
||||||
// itself enforces per messages.getInlineBotResults response.
|
// itself enforces per messages.getInlineBotResults response.
|
||||||
MaxGifCatalogEntries = MaxBotInlineResults
|
MaxGifCatalogEntries = MaxBotInlineResults
|
||||||
// MaxGifCatalogUploadSize bounds one admin-uploaded catalog file.
|
// MaxGifCatalogUploadSize bounds one admin-uploaded or seed-imported
|
||||||
// 20MB matches MaxBotInlineWebSize, the size a client-side inline GIF
|
// catalog file (the raw GIF/MP4 before transcoding, not the smaller MP4
|
||||||
// result is already allowed to be.
|
// files.Service.AdminUploadGifMaterial produces from it).
|
||||||
MaxGifCatalogUploadSize = MaxBotInlineWebSize
|
//
|
||||||
|
// Deliberately its own constant, not MaxBotInlineWebSize: that bounds
|
||||||
|
// content a *client* submits as an inline result, an unrelated
|
||||||
|
// constraint. This one instead matches
|
||||||
|
// files.gifTranscodeMaxInputBytes -- the actual ceiling the ffmpeg
|
||||||
|
// transcoder accepts -- so a real download (unoptimized meme/reaction
|
||||||
|
// GIFs routinely run 20-50MB, frame-by-frame GIF encoding is notoriously
|
||||||
|
// space-inefficient) doesn't get rejected here before ever reaching a
|
||||||
|
// step that could actually handle it.
|
||||||
|
MaxGifCatalogUploadSize = 50 << 20
|
||||||
)
|
)
|
||||||
|
|
||||||
// GifCatalogEntry is one admin-curated GIF served by the built-in @gif inline
|
// GifCatalogEntry is one admin-curated GIF served by the built-in @gif inline
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue