fixed size limit on server to include crypto overhead

This commit is contained in:
Danny Coates 2019-03-06 10:31:50 -08:00
parent dce8b6e525
commit 7f9674f494
No known key found for this signature in database
GPG key ID: 4C442633C62E00CB
7 changed files with 24 additions and 11 deletions

View file

@ -11,6 +11,7 @@ class Limiter extends Transform {
this.length += chunk.length;
this.push(chunk);
if (this.length > this.limit) {
console.error('LIMIT', this.length, this.limit);
return callback(new Error('limit'));
}
callback();

View file

@ -3,6 +3,7 @@ const storage = require('../storage');
const config = require('../config');
const mozlog = require('../log');
const Limiter = require('../limiter');
const { encryptedSize } = require('../../app/utils');
const log = mozlog('send.upload');
@ -22,7 +23,7 @@ module.exports = async function(req, res) {
};
try {
const limiter = new Limiter(config.max_file_size);
const limiter = new Limiter(encryptedSize(config.max_file_size));
const fileStream = req.pipe(limiter);
//this hasn't been updated to expiration time setting yet
//if you want to fallback to this code add this

View file

@ -6,6 +6,7 @@ const Limiter = require('../limiter');
const wsStream = require('websocket-stream/stream');
const fxa = require('../fxa');
const { statUploadEvent } = require('../amplitude');
const { encryptedSize } = require('../../app/utils');
const { Duplex } = require('stream');
@ -74,7 +75,7 @@ module.exports = function(ws, req) {
id: newId
})
);
const limiter = new Limiter(maxFileSize);
const limiter = new Limiter(encryptedSize(maxFileSize));
const flowControl = new Duplex({
read() {
ws.resume();
@ -92,8 +93,8 @@ module.exports = function(ws, req) {
});
fileStream = wsStream(ws, { binary: true })
.pipe(limiter)
.pipe(flowControl);
.pipe(flowControl)
.pipe(limiter); // limiter needs to be the last in the chain
await storage.set(newId, fileStream, meta, timeLimit);