forkattu lähteestä coolaj86/goldilocks.js
		
	changed method for wrapping socket pre-TLS
This commit is contained in:
		
							vanhempi
							
								
									509f2f4f4f
								
							
						
					
					
						commit
						e259c4d0ce
					
				@ -36,40 +36,17 @@ module.exports.create = function (deps, config, netHandler) {
 | 
			
		||||
  , 'localPort'
 | 
			
		||||
  ];
 | 
			
		||||
  function wrapSocket(socket, opts) {
 | 
			
		||||
    var reader = require('socket-pair').create(function (err, writer) {
 | 
			
		||||
      if (err) {
 | 
			
		||||
        reader.emit('error', err);
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
    if (!opts.hyperPeek) {
 | 
			
		||||
      process.nextTick(function () {
 | 
			
		||||
        socket.unshift(opts.firstChunk);
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
      socket.pipe(writer);
 | 
			
		||||
      writer.pipe(socket);
 | 
			
		||||
 | 
			
		||||
      socket.on('error', function (err) {
 | 
			
		||||
        console.log('wrapped TLS socket error', err);
 | 
			
		||||
        reader.emit('error', err);
 | 
			
		||||
      });
 | 
			
		||||
      writer.on('error', function (err) {
 | 
			
		||||
        console.error('socket-pair writer error', err);
 | 
			
		||||
        // If the writer had an error the reader probably did too, and I don't think we'll
 | 
			
		||||
        // get much out of emitting this on the original socket, so logging is enough.
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // We can't set these properties the normal way because there is a getter without a setter,
 | 
			
		||||
    // but we can use defineProperty. We reuse the descriptor even though we will be manipulating
 | 
			
		||||
    // it because we will only ever set the value and we set it every time.
 | 
			
		||||
    var descriptor = {enumerable: true, configurable: true, writable: true};
 | 
			
		||||
    var wrapped = require('tunnel-packer').wrapSocket(socket);
 | 
			
		||||
    addressNames.forEach(function (name) {
 | 
			
		||||
      descriptor.value = opts[name] || extractSocketProp(socket, name);
 | 
			
		||||
      Object.defineProperty(reader, name, descriptor);
 | 
			
		||||
      wrapped[name] = opts[name] || wrapped[name];
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    return reader;
 | 
			
		||||
    return wrapped;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  var le = greenlock.create({
 | 
			
		||||
 | 
			
		||||
@ -64,6 +64,7 @@
 | 
			
		||||
    "sni": "^1.0.0",
 | 
			
		||||
    "socket-pair": "^1.0.0",
 | 
			
		||||
    "stream-pair": "^1.0.3",
 | 
			
		||||
    "stunnel": "git+https://git.daplie.com/Daplie/node-tunnel-client.git#v1"
 | 
			
		||||
    "stunnel": "git+https://git.daplie.com/Daplie/node-tunnel-client.git#v1",
 | 
			
		||||
    "tunnel-packer": "^1.3.0"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Ladataan…
	
	
			
			x
			
			
		
	
		Viittaa uudesa ongelmassa
	
	Block a user