@@ -7,6 +7,7 @@ var http = require("http");
77
88var requests_recv = 0 ;
99var requests_sent = 0 ;
10+ var request_upgradeHead = null ;
1011
1112function createTestServer ( ) {
1213 return new testServer ( ) ;
@@ -15,25 +16,26 @@ function createTestServer(){
1516function testServer ( ) {
1617 var server = this ;
1718 http . Server . call ( server , function ( ) { } ) ;
18-
19+
1920 server . addListener ( "connection" , function ( ) {
2021 requests_recv ++ ;
2122 } ) ;
22-
23+
2324 server . addListener ( "request" , function ( req , res ) {
2425 res . writeHead ( 200 , { "Content-Type" : "text/plain" } ) ;
2526 res . write ( "okay" ) ;
2627 res . end ( ) ;
2728 } ) ;
28-
29+
2930 server . addListener ( "upgrade" , function ( req , socket , upgradeHead ) {
30- socket . write ( [
31- "HTTP/1.1 101 Web Socket Protocol Handshake" ,
32- "Upgrade: WebSocket" ,
33- "Connection: Upgrade" ,
34- "\r\n"
35- ] . join ( "\r\n" ) , "utf8" ) ;
36-
31+ socket . write ( "HTTP/1.1 101 Web Socket Protocol Handshake\r\n"
32+ + "Upgrade: WebSocket\r\n"
33+ + "Connection: Upgrade\r\n"
34+ + "\r\n\r\n"
35+ ) ;
36+
37+ request_upgradeHead = upgradeHead ;
38+
3739 socket . ondata = function ( d , start , end ) {
3840 var data = d . toString ( 'utf8' , start , end ) ;
3941 if ( data == "kill" ) {
@@ -66,23 +68,30 @@ function writeReq(socket, data, encoding){
6668function test_upgrade_with_listener ( _server ) {
6769 var conn = new testClient ( ) ;
6870 var state = 0 ;
69-
71+
7072 conn . addListener ( "connect" , function ( ) {
71- writeReq ( conn , "GET / HTTP/1.1\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\n\r\n" ) ;
73+ writeReq ( conn
74+ , "GET / HTTP/1.1\r\n"
75+ + "Upgrade: WebSocket\r\n"
76+ + "Connection: Upgrade\r\n"
77+ + "\r\n"
78+ + "WjN}|M(6"
79+ ) ;
7280 } ) ;
73-
81+
7482 conn . addListener ( "data" , function ( data ) {
7583 state ++ ;
76-
84+
7785 if ( state == 1 ) {
7886 assert . equal ( "HTTP/1.1 101" , data . substr ( 0 , 12 ) ) ;
87+ assert . equal ( "WjN}|M(6" , request_upgradeHead . toString ( "utf8" ) ) ;
7988 conn . write ( "test" , "utf8" ) ;
8089 } else if ( state == 2 ) {
8190 assert . equal ( "test" , data ) ;
8291 conn . write ( "kill" , "utf8" ) ;
8392 }
8493 } ) ;
85-
94+
8695 conn . addListener ( "end" , function ( ) {
8796 assert . equal ( 2 , state ) ;
8897 conn . end ( ) ;
@@ -98,7 +107,7 @@ var test_upgrade_no_listener_ended = false;
98107
99108function test_upgrade_no_listener ( ) {
100109 var conn = new testClient ( ) ;
101-
110+
102111 conn . addListener ( "connect" , function ( ) {
103112 writeReq ( conn , "GET / HTTP/1.1\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\n\r\n" ) ;
104113 } ) ;
@@ -107,7 +116,7 @@ function test_upgrade_no_listener(){
107116 test_upgrade_no_listener_ended = true ;
108117 conn . end ( ) ;
109118 } ) ;
110-
119+
111120 conn . addListener ( "close" , function ( ) {
112121 test_standard_http ( ) ;
113122 } ) ;
@@ -121,12 +130,12 @@ function test_standard_http(){
121130 conn . addListener ( "connect" , function ( ) {
122131 writeReq ( conn , "GET / HTTP/1.1\r\n\r\n" ) ;
123132 } ) ;
124-
133+
125134 conn . addListener ( "data" , function ( data ) {
126135 assert . equal ( "HTTP/1.1 200" , data . substr ( 0 , 12 ) ) ;
127136 conn . end ( ) ;
128137 } ) ;
129-
138+
130139 conn . addListener ( "close" , function ( ) {
131140 server . close ( ) ;
132141 } ) ;
@@ -138,6 +147,7 @@ server.addListener("listening", function(){
138147 // All tests get chained after this:
139148 test_upgrade_with_listener ( server ) ;
140149} ) ;
150+
141151server . listen ( PORT ) ;
142152
143153
@@ -148,4 +158,4 @@ process.addListener("exit", function () {
148158 assert . equal ( 3 , requests_recv ) ;
149159 assert . equal ( 3 , requests_sent ) ;
150160 assert . ok ( test_upgrade_no_listener_ended ) ;
151- } ) ;
161+ } ) ;
0 commit comments