@ -33,11 +33,13 @@ var server = http.createServer(function(req, res) {
case '/1' :
case '/1' :
return setTimeout ( function ( ) {
return setTimeout ( function ( ) {
req . socket . destroy ( ) ;
req . socket . destroy ( ) ;
server . emit ( 'requestDone' ) ;
} ) ;
} ) ;
case '/2' :
case '/2' :
return process . nextTick ( function ( ) {
return process . nextTick ( function ( ) {
res . destroy ( ) ;
res . destroy ( ) ;
server . emit ( 'requestDone' ) ;
} ) ;
} ) ;
// in one case, actually send a response in 2 chunks
// in one case, actually send a response in 2 chunks
@ -45,18 +47,19 @@ var server = http.createServer(function(req, res) {
res . write ( 'hello ' ) ;
res . write ( 'hello ' ) ;
return setTimeout ( function ( ) {
return setTimeout ( function ( ) {
res . end ( 'world!' ) ;
res . end ( 'world!' ) ;
server . emit ( 'requestDone' ) ;
} ) ;
} ) ;
default :
default :
return res . destroy ( ) ;
res . destroy ( ) ;
server . emit ( 'requestDone' ) ;
}
}
} ) ;
} ) ;
// Make a bunch of requests pipelined on the same socket
// Make a bunch of requests pipelined on the same socket
function generator ( ) {
function generator ( seeds ) {
var reqs = [ 3 , 1 , 2 , 3 , 4 , 1 , 2 , 3 , 4 , 1 , 2 , 3 , 4 ] ;
return seeds . map ( function ( r ) {
return reqs . map ( function ( r ) {
return 'GET /' + r + ' HTTP/1.1\r\n' +
return 'GET /' + r + ' HTTP/1.1\r\n' +
'Host: localhost:' + common . PORT + '\r\n' +
'Host: localhost:' + common . PORT + '\r\n' +
'\r\n' +
'\r\n' +
@ -66,13 +69,18 @@ function generator() {
server . listen ( common . PORT , function ( ) {
server . listen ( common . PORT , function ( ) {
var seeds = [ 3 , 1 , 2 , 3 , 4 , 1 , 2 , 3 , 4 , 1 , 2 , 3 , 4 ] ;
var client = net . connect ( { port : common . PORT } ) ;
var client = net . connect ( { port : common . PORT } ) ;
var done = 0 ;
server . on ( 'requestDone' , function ( ) {
if ( ++ done == seeds . length ) {
server . close ( ) ;
}
} ) ;
// immediately write the pipelined requests.
// immediately write the pipelined requests.
// Some of these will not have a socket to destroy!
// Some of these will not have a socket to destroy!
client . write ( generator ( ) , function ( ) {
client . write ( generator ( seeds ) ) ;
server . close ( ) ;
} ) ;
} ) ;
} ) ;
process . on ( 'exit' , function ( c ) {
process . on ( 'exit' , function ( c ) {