@ -1,38 +1,34 @@
'use strict' ;
'use strict' ;
require ( '../common' ) ;
const common = require ( '../common' ) ;
var assert = require ( 'assert' ) ;
const assert = require ( 'assert' ) ;
var http = require ( 'http' ) ;
const http = require ( 'http' ) ;
var serverConnected = false ;
var serverRequests = 0 ;
var clientResponses = 0 ;
var clientResponses = 0 ;
var server = http . createServer ( function ( req , res ) {
const server = http . createServer ( common . mustCall ( function ( req , res ) {
console . error ( 'Server got GET request' ) ;
console . error ( 'Server got GET request' ) ;
req . resume ( ) ;
req . resume ( ) ;
++ serverRequests ;
res . writeHead ( 200 ) ;
res . writeHead ( 200 ) ;
res . write ( '' ) ;
res . write ( '' ) ;
setTimeout ( function ( ) {
setTimeout ( function ( ) {
res . end ( req . url ) ;
res . end ( req . url ) ;
} , 50 ) ;
} , 50 ) ;
} ) ;
} , 2 ) ) ;
server . on ( 'connect' , function ( req , socket , firstBodyChunk ) {
server . on ( 'connect' , common . mustCall ( function ( req , socket ) {
console . error ( 'Server got CONNECT request' ) ;
console . error ( 'Server got CONNECT request' ) ;
serverConnected = true ;
socket . write ( 'HTTP/1.1 200 Connection established\r\n\r\n' ) ;
socket . write ( 'HTTP/1.1 200 Connection established\r\n\r\n' ) ;
socket . resume ( ) ;
socket . resume ( ) ;
socket . on ( 'end' , function ( ) {
socket . on ( 'end' , function ( ) {
socket . end ( ) ;
socket . end ( ) ;
} ) ;
} ) ;
} ) ;
} ) ) ;
server . listen ( 0 , function ( ) {
server . listen ( 0 , function ( ) {
var req = http . request ( {
const req = http . request ( {
port : this . address ( ) . port ,
port : this . address ( ) . port ,
method : 'CONNECT' ,
method : 'CONNECT' ,
path : 'google.com:80'
path : 'google.com:80'
} ) ;
} ) ;
req . on ( 'connect' , function ( res , socket , firstBodyChunk ) {
req . on ( 'connect' , common . mustCall ( function ( res , socket ) {
console . error ( 'Client got CONNECT response' ) ;
console . error ( 'Client got CONNECT response' ) ;
socket . end ( ) ;
socket . end ( ) ;
socket . on ( 'end' , function ( ) {
socket . on ( 'end' , function ( ) {
@ -40,7 +36,7 @@ server.listen(0, function() {
doRequest ( 1 ) ;
doRequest ( 1 ) ;
} ) ;
} ) ;
socket . resume ( ) ;
socket . resume ( ) ;
} ) ;
} ) ) ;
req . end ( ) ;
req . end ( ) ;
} ) ;
} ) ;
@ -48,7 +44,7 @@ function doRequest(i) {
http . get ( {
http . get ( {
port : server . address ( ) . port ,
port : server . address ( ) . port ,
path : '/request' + i
path : '/request' + i
} , function ( res ) {
} , common . mustCall ( function ( res ) {
console . error ( 'Client got GET response' ) ;
console . error ( 'Client got GET response' ) ;
var data = '' ;
var data = '' ;
res . setEncoding ( 'utf8' ) ;
res . setEncoding ( 'utf8' ) ;
@ -56,17 +52,11 @@ function doRequest(i) {
data += chunk ;
data += chunk ;
} ) ;
} ) ;
res . on ( 'end' , function ( ) {
res . on ( 'end' , function ( ) {
assert . e qual( data , '/request' + i ) ;
assert . strictE qual( data , '/request' + i ) ;
++ clientResponses ;
++ clientResponses ;
if ( clientResponses === 2 ) {
if ( clientResponses === 2 ) {
server . close ( ) ;
server . close ( ) ;
}
}
} ) ;
} ) ;
} ) ;
} ) ) ;
}
}
process . on ( 'exit' , function ( ) {
assert ( serverConnected ) ;
assert . equal ( serverRequests , 2 ) ;
assert . equal ( clientResponses , 2 ) ;
} ) ;