http-party / http-server

a simple zero-configuration command-line http server

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Receives SIGTERM during "DDoS"

Maxim-Mazurok opened this issue · comments

Environment Versions

  1. OS Type: Windows 11
  2. Node version: $ node --version v16.3.0
  3. http-server version: $ http-server --version v14.1.0

Steps to reproduce

  1. Run this code:
    const serveProcess = childProcess.exec('http-server -a :: -p 3000 -c-1 ./dist');
    
    serveProcess.stdout.on('data', (data) => {
        console.log(data);
    });
    
    serveProcess.stderr.on('data', (data) => {
        console.error(data);
    });
    
    serveProcess.on('close', (code, signal) => {
        console.log(`Server process closed with code ${code} or signal ${signal}`);
        process.exit();
    });
    serveProcess.on('exit', (code, signal) => {
        console.log(`Server process exited with code ${code} or signal ${signal}`);
    });
  2. Clone https://github.com/talentlessguy/simple-ddos and run node demo/app.js
  3. Wait for a bit, observe the first script reporting:
    Server process exited with code 1 or signal null
    Server process closed with code 1 or signal null
    
  4. Try to run the server script again, observe error:
    code: 'EADDRINUSE',
    errno: -4091,
    syscall: 'listen',
    address: '::',
    port: 3000
    

(you can run npx -y kill-port 3000 to forcefully kill the http-server)

Expected result

I expect http-server not to receive SIGTERM signal. I'm pretty sure that it's sending it to itself somehow?

Actual result

See in repro steps

Other information

My use-case is running cypress tests using http-server, and when I disabled cache using -c-1 - it started to fail midway. When I run tests individually - they pass, but when I run them all sequentially - the server gets sigterm signal.

I'll probably just ignore it because despite the server getting this signal, it still continues to work just fine.

This is kinda a problem when I do want to kill it tho, once all tests are done. Because tree-kill npm module that I use normally to kill http-server, doesn't work in this scenario.

This issue has been inactive for 180 days