socket: Set time out and forcibly close timed out sockets
Some checks failed
continuous-integration/appveyor/branch AppVeyor build failed
Some checks failed
continuous-integration/appveyor/branch AppVeyor build failed
This commit is contained in:
parent
598548d97b
commit
e00b0b01ed
3 changed files with 24 additions and 6 deletions
23
flaska.mjs
23
flaska.mjs
|
@ -1061,6 +1061,22 @@ ctx.state.nonce = nonce;
|
|||
}
|
||||
}
|
||||
|
||||
create() {
|
||||
this.compile()
|
||||
this.server = this.http.createServer(this.requestStart.bind(this))
|
||||
|
||||
this.server.on('connection', function (socket) {
|
||||
// Set socket idle timeout in milliseconds
|
||||
socket.setTimeout(1000 * 60 * 5) // 5 minutes
|
||||
|
||||
// Wait for timeout event (socket will emit it when idle timeout elapses)
|
||||
socket.on('timeout', function () {
|
||||
// Call destroy again
|
||||
socket.destroy();
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
listen(port, orgIp, orgcb) {
|
||||
let ip = orgIp
|
||||
let cb = orgcb
|
||||
|
@ -1071,8 +1087,8 @@ ctx.state.nonce = nonce;
|
|||
if (typeof(port) !== 'number') {
|
||||
throw new Error('Flaska.listen() called with non-number in port')
|
||||
}
|
||||
this.compile()
|
||||
this.server = this.http.createServer(this.requestStart.bind(this))
|
||||
|
||||
this.create()
|
||||
|
||||
this.server.listen(port, ip, cb)
|
||||
}
|
||||
|
@ -1082,8 +1098,7 @@ ctx.state.nonce = nonce;
|
|||
return Promise.reject(new Error('Flaska.listen() called with non-number in port'))
|
||||
}
|
||||
|
||||
this.compile()
|
||||
this.server = this.http.createServer(this.requestStart.bind(this))
|
||||
this.create()
|
||||
|
||||
if (this.server.listenAsync && typeof(this.server.listenAsync) === 'function') {
|
||||
return this.server.listenAsync(port, ip)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "flaska",
|
||||
"version": "1.3.3",
|
||||
"version": "1.3.4",
|
||||
"description": "Flaska is a micro web-framework for node. It is designed to be fast, simple and lightweight, and is distributed as a single file module with no dependencies.",
|
||||
"main": "flaska.mjs",
|
||||
"scripts": {
|
||||
|
|
|
@ -6,7 +6,7 @@ const indexMap = [
|
|||
'thirdCall',
|
||||
]
|
||||
|
||||
export function fakeHttp(inj1, inj2) {
|
||||
export function fakeHttp(inj1, inj2, inj3) {
|
||||
let intermediate = {
|
||||
createServer: function(cb) {
|
||||
if (inj1) inj1(cb)
|
||||
|
@ -15,6 +15,9 @@ export function fakeHttp(inj1, inj2) {
|
|||
listen: function(port, ip, cb) {
|
||||
if (inj2) inj2(port, ip, cb)
|
||||
else if (cb) cb()
|
||||
},
|
||||
on: function(name, handler) {
|
||||
if (inj2) inj3(name, handler)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue