fastify / fastify-multipart

Multipart support for Fastify
MIT License
490 stars 103 forks source link

saveRequestFiles doesnt delete file when user cancels request #546

Open SupertigerDev opened 2 months ago

SupertigerDev commented 2 months ago

Prerequisites

Fastify version

5.0.0

Plugin version

9.0.1

Node.js version

21

Operating system

Linux

Operating system version (i.e. 20.04, 11.3, 10)

Ubuntu 20.04

Description

  1. in postman, attach a large file
  2. Post the request and then cancel it
  3. See that the file is not deleted

Link to code that reproduces the bug

import Fastify from "fastify";
import multipart from "@fastify/multipart";
const fastify = Fastify({
  logger: true,
});
fastify.register(multipart, { logLevel: "error" });

fastify.post("/", async (request, reply) => {
  const files = await request.saveRequestFiles({
    limits: { files: 1, fields: 0, fileSize: 55655 * 1024 * 1024 },
  });

  reply.send({ test: "lol" });
});

fastify.listen({ port: 3000 });

edit: infact, it seems like saveRequestFiles promise just gets stuck forever or something

Expected Behavior

file should be deleted

Seems like the solution would be to add a catch block to pipeline and unlink the file

mcollina commented 2 months ago

Thanks for reporting! Would you like to send a Pull Request to address this issue? Remember to add unit tests.