@@ -12,6 +12,7 @@ const crypto = require('crypto');
12
12
const PerMessageDeflate = require ( './PerMessageDeflate' ) ;
13
13
const bufferUtil = require ( './BufferUtil' ) ;
14
14
const ErrorCodes = require ( './ErrorCodes' ) ;
15
+ const constants = require ( './Constants' ) ;
15
16
16
17
const Buffer = safeBuffer . Buffer ;
17
18
@@ -112,14 +113,26 @@ class Sender {
112
113
* @public
113
114
*/
114
115
close ( code , data , mask , cb ) {
115
- if ( code !== undefined && ( typeof code !== 'number' || ! ErrorCodes . isValidErrorCode ( code ) ) ) {
116
+ var buf ;
117
+
118
+ if ( code === undefined ) {
119
+ code = 1000 ;
120
+ } else if ( typeof code !== 'number' || ! ErrorCodes . isValidErrorCode ( code ) ) {
116
121
throw new Error ( 'first argument must be a valid error code number' ) ;
117
122
}
118
123
119
- const buf = Buffer . allocUnsafe ( 2 + ( data ? Buffer . byteLength ( data ) : 0 ) ) ;
120
-
121
- buf . writeUInt16BE ( code || 1000 , 0 , true ) ;
122
- if ( buf . length > 2 ) buf . write ( data , 2 ) ;
124
+ if ( data === undefined || data === '' ) {
125
+ if ( code === 1000 ) {
126
+ buf = constants . EMPTY_BUFFER ;
127
+ } else {
128
+ buf = Buffer . allocUnsafe ( 2 ) ;
129
+ buf . writeUInt16BE ( code , 0 , true ) ;
130
+ }
131
+ } else {
132
+ buf = Buffer . allocUnsafe ( 2 + Buffer . byteLength ( data ) ) ;
133
+ buf . writeUInt16BE ( code , 0 , true ) ;
134
+ buf . write ( data , 2 ) ;
135
+ }
123
136
124
137
if ( this . _deflating ) {
125
138
this . enqueue ( [ this . doClose , buf , mask , cb ] ) ;
0 commit comments