'use strict'

const DELAY = parseInt(process.env.DELAY, 10) || 2000

const bigBuff = Buffer.alloc(2 * 1024 * 1024, 'HellWorld ')

function sendHttpHeaders (conn) {
  conn.write('HTTP/1.1 200 OK\n')
  conn.write('Content-Type: text/plain\n')
  conn.write('\n')
}

exports.handleBodyRequest = (conn) => {
  sendHttpHeaders(conn)
  conn.end(bigBuff)
}

exports.handleDelayRequest = (conn) => {
  sendHttpHeaders(conn)
  conn.write('Delay start')
  setTimeout(() => {
    conn.end(`Waited for ${DELAY}ms`)
  }, DELAY)

  conn.on('error', console.warn)
}

exports.handleImmediateRequest = (conn) => {
  sendHttpHeaders(conn)
  conn.end(`Immediate tcp response`)
}

@@ -187,16 +187,103 @@
  200 OK%5C
+r%5Cn')%0A  conn.write('Connection: close%5Cr%5Cn')%0A  conn.write('Content-Encoding: identity%5Cr%5C
 n')%0A  co
@@ -316,16 +316,33 @@
 xt/plain
+; charset=utf-8%5Cr
 %5Cn')%0A  c
@@ -353,16 +353,18 @@
 write('%5C
+r%5C
 n')%0A%7D%0A%0Ae
@@ -394,32 +394,96 @@
 t = (conn) =%3E %7B%0A
+  conn.on('error', console.error)%0A  conn.once('data', () =%3E %7B%0A  
   sendHttpHeader
@@ -484,32 +484,34 @@
 Headers(conn)%0A  
+ 
+ 
 conn.end(bigBuff
@@ -512,16 +512,21 @@
 igBuff)%0A
+  %7D)%0A
 %7D%0A%0Aexpor
@@ -553,32 +553,96 @@
 t = (conn) =%3E %7B%0A
+  conn.on('error', console.error)%0A  conn.once('data', () =%3E %7B%0A  
   sendHttpHeader
@@ -647,24 +647,26 @@
 ers(conn)%0A  
+ 
+ 
 conn.write('
@@ -679,16 +679,18 @@
 start')%0A
+  
   setTim
@@ -702,24 +702,26 @@
 () =%3E %7B%0A    
+  
 conn.end(%60Wa
@@ -744,16 +744,18 @@
 %7Dms%60)%0A  
+ 
+ 
 %7D, DELAY
@@ -760,40 +760,11 @@
 AY)%0A
-%0A
   
-conn.on('error', console.warn
+%7D
 )%0A%7D%0A
@@ -809,16 +809,80 @@
 n) =%3E %7B%0A
+  conn.on('error', console.error)%0A  conn.once('data', () =%3E %7B%0A  
   sendHt
@@ -897,16 +897,18 @@
 s(conn)%0A
+  
   conn.e
@@ -936,10 +936,15 @@
 ponse%60)%0A
+  %7D)%0A
 %7D%0A

Fix HTTP over TCP