HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: 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,
Upload Files
File: /var/www/quadcode.com/node_modules/js-git/net/transport-tcp.js
"use strict";

var makeChannel = require('culvert');
var bodec = require('bodec');
var pktLine = require('../lib/pkt-line');
var wrapHandler = require('../lib/wrap-handler');

module.exports = function (connect) {

  return function tcpTransport(path, host, port) {
    port = (port|0) || 9418;
    if (!path || !host) throw new Error("path and host are required");

    return function (serviceName, onError) {

      onData = wrapHandler(onData, onError);
      onDrain = wrapHandler(onDrain, onError);

      var socket = connect(host, port, onError);
      var inter = makeChannel();
      inter.put = pktLine.deframer(inter.put);

      socket.put = pktLine.framer(socket.put);
      var greeting = bodec.fromRaw(serviceName + " " + path + "\0host=" + host + "\0");
      socket.put(greeting);

      // Pipe socket to inter with backpressure
      socket.take(onData);
      function onData(chunk) {
        if (inter.put(chunk)) {
          socket.take(onData);
        }
        else {
          inter.drain(onDrain);
        }
      }
      function onDrain() {
        socket.take(onData);
      }

      return {
        put: socket.put,
        drain: socket.drain,
        take: inter.take
      };
    };
  };
};