1
0
Fork 0
mirror of https://github.com/Chocobozzz/PeerTube.git synced 2025-10-04 10:19:35 +02:00

Fix request body limit

This commit is contained in:
Chocobozzz 2021-03-09 09:58:08 +01:00
parent 18b24b2dc5
commit b329abc2f0
No known key found for this signature in database
GPG key ID: 583A612D890159BE
2 changed files with 16 additions and 5 deletions

View file

@ -30,13 +30,25 @@ const peertubeGot = got.extend({
handlers: [
(options, next) => {
const promiseOrStream = next(options) as CancelableRequest<any>
const bodyKBLimit = options.context?.bodyKBLimit
const bodyKBLimit = options.context?.bodyKBLimit as number
if (!bodyKBLimit) throw new Error('No KB limit for this request')
const bodyLimit = bodyKBLimit * 1000
/* eslint-disable @typescript-eslint/no-floating-promises */
promiseOrStream.on('downloadProgress', progress => {
if (progress.transferred * 1000 > bodyKBLimit && progress.percent !== 1) {
promiseOrStream.cancel(`Exceeded the download limit of ${bodyKBLimit} bytes`)
if (progress.transferred > bodyLimit && progress.percent !== 1) {
const message = `Exceeded the download limit of ${bodyLimit} B`
logger.warn(message)
// CancelableRequest
if (promiseOrStream.cancel) {
promiseOrStream.cancel()
return
}
// Stream
(promiseOrStream as any).destroy()
}
})
@ -177,5 +189,5 @@ function buildRequestError (error: any) {
error.responseBody = error.response.body
}
return newError
return error
}