Server : Apache/2.4.52 (Ubuntu) System : Linux srv913213 5.15.0-179-generic #189-Ubuntu SMP Tue May 5 18:20:56 UTC 2026 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /usr/lib/node_modules/pm2/node_modules/js-git/net/ |
"use strict";
var makeChannel = require('culvert');
var wrapHandler = require('../lib/wrap-handler');
var net = require('net');
module.exports = connect;
function connect(host, port, onError) {
port = port|0;
host = String(host);
if (!port || !host) throw new TypeError("host and port are required");
// Wrap event handlers from node stream
onConnect = wrap(onConnect, onError);
pump = wrap(pump, onError);
onEnd = wrap(onEnd, onError);
onDrain = wrap(onDrain, onError);
// Wrap event handlers from culvert socket
onTake = wrapHandler(onTake, onError);
var serverChannel = makeChannel();
var clientChannel = makeChannel();
var socket = {
put: serverChannel.put,
drain: serverChannel.drain,
take: clientChannel.take
};
var client = net.connect({ host: host, port: port }, onConnect);
if (onError) client.on("error", onError);
return {
put: clientChannel.put,
drain: clientChannel.drain,
take: serverChannel.take
};
function onConnect() {
socket.take(onTake);
client.on("end", onEnd);
client.on("readable", pump);
client.on("drain", onDrain);
client.on("error", onError);
}
function pump() {
var chunk;
do {
chunk = client.read();
if (!chunk) return;
} while (socket.put(chunk));
socket.drain(pump);
}
function onEnd() {
socket.put();
}
function onTake(data) {
if (data === undefined) {
client.end();
}
else if (client.write(data)) {
socket.take(onTake);
}
}
function onDrain() {
socket.take(onTake);
}
}
function wrap(fn, onError) {
return function () {
try {
return fn.apply(this, arguments);
}
catch (err) {
onError(err);
}
};
}