mirror of
https://github.com/danbulant/koa-plugins
synced 2026-05-19 20:28:36 +00:00
55 lines
1.3 KiB
JavaScript
55 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
var net = require('net');
|
|
|
|
var MSG_TYPE = require('./consts').MSG_TYPE;
|
|
var createConnection = require('./connection');
|
|
var parsekv = require('./parsekv');
|
|
|
|
module.exports = function(client, cb){
|
|
var conn = createConnection(client);
|
|
|
|
var received = false;
|
|
conn.on('message-' + MSG_TYPE.FCGI_GET_VALUES_RESULT, function(reqId, data){
|
|
var kv = null;
|
|
try {
|
|
kv = parsekv(data);
|
|
kv.FCGI_MAX_CONNS = Number(kv.FCGI_MAX_CONNS);
|
|
kv.FCGI_MAX_REQS = Number(kv.FCGI_MAX_REQS);
|
|
kv.FCGI_MPXS_CONNS = Number(kv.FCGI_MPXS_CONNS);
|
|
if(kv.FCGI_MAX_CONNS >= 0 && kv.FCGI_MAX_CONNS < client._maxConns) {
|
|
client._maxConns = kv.FCGI_MAX_CONNS;
|
|
}
|
|
if(kv.FCGI_MAX_REQS >= 0 && kv.FCGI_MAX_REQS < client._maxReqs) {
|
|
client._maxReqs = kv.FCGI_MAX_REQS;
|
|
}
|
|
if(kv.FCGI_MPXS_CONNS > 0) {
|
|
client._mpxsConns = true;
|
|
} else {
|
|
client._mpxsConns = false;
|
|
}
|
|
} catch(e) {
|
|
client.emit('error', e);
|
|
}
|
|
received = true;
|
|
conn.end();
|
|
return;
|
|
});
|
|
|
|
conn.on('connect', function(){
|
|
conn.send(MSG_TYPE.FCGI_GET_VALUES, 0, {
|
|
FCGI_MAX_CONNS: '',
|
|
FCGI_MAX_REQS: '',
|
|
FCGI_MPXS_CONNS: '',
|
|
});
|
|
});
|
|
conn.on('error', function(e){
|
|
client.emit('error', e);
|
|
});
|
|
conn.on('close', function(){
|
|
if(!received) {
|
|
client.emit('error', new Error('Server did not respond its FastCGI options.'));
|
|
}
|
|
cb();
|
|
});
|
|
};
|