@@ -165,6 +165,9 @@ class NetworkSession {
165
165
* Make the transport level connection
166
166
*/
167
167
async transportConnect ( address ) {
168
+ if ( address . protocol . toUpperCase ( ) == 'TCP' && address . httpsProxy ) {
169
+ errors . throwErr ( errors . ERR_INVALID_CONNECT_STRING_PARAMETERS , 'https proxy requires protocol as' , 'tcps ' ) ;
170
+ }
168
171
if ( address . protocol && ( address . protocol . toUpperCase ( ) == 'TCP' || address . protocol . toUpperCase ( ) == 'TCPS' ) ) {
169
172
this . ntAdapter = new NTTCP ( this . sAtts . nt ) ;
170
173
} else {
@@ -173,8 +176,8 @@ class NetworkSession {
173
176
await this . ntAdapter . connect ( address ) ;
174
177
this . ntAdapter . startRead ( ) ;
175
178
this . sAtts . ntCha = this . ntAdapter . cha ;
176
- this . sndDatapkt = new Packet . DataPacket ( this . sAtts . sdu , this . sAtts . largeSDU ) ;
177
- this . rcvDatapkt = new Packet . DataPacket ( this . sAtts . sdu , this . sAtts . largeSDU ) ;
179
+ this . sndDatapkt = new Packet . DataPacket ( this . sAtts . largeSDU ) ;
180
+ this . rcvDatapkt = new Packet . DataPacket ( this . sAtts . largeSDU ) ;
178
181
}
179
182
180
183
/**
@@ -280,17 +283,16 @@ class NetworkSession {
280
283
}
281
284
282
285
connectPkt = new Packet . ConnectPacket ( redirConnData , this . sAtts , constants . NSPFRDR ) ;
286
+ this . sndDatapkt = new Packet . DataPacket ( this . sAtts . largeSDU ) ;
283
287
this . _sendConnect ( connectPkt ) ;
284
288
}
285
289
}
286
290
287
291
/* Accepted */
288
292
this . connected = true ;
289
- this . rcvDatapkt = new Packet . DataPacket ( this . sAtts . sdu , this . sAtts . largeSDU ) ;
290
- this . rcvDatapkt . offset = this . rcvDatapkt . dataPtr ;
291
- this . rcvDatapkt . len = this . rcvDatapkt . dataPtr ;
292
- this . sndDatapkt = new Packet . DataPacket ( this . sAtts . sdu , this . sAtts . largeSDU ) ;
293
- this . sndDatapkt . createPacket ( ) ;
293
+ this . cData = null ;
294
+ this . sndDatapkt = new Packet . DataPacket ( this . sAtts . largeSDU ) ;
295
+ this . sndDatapkt . createPacket ( constants . NSPDADAT ) ; //Currently only used for disconnect
294
296
this . sndDatapkt . offset = this . sndDatapkt . dataPtr ;
295
297
this . sndDatapkt . len = this . sndDatapkt . bufLen ;
296
298
this . markerPkt = new Packet . MarkerPacket ( this . sAtts . largeSDU ) ;
@@ -466,7 +468,7 @@ class NetworkSession {
466
468
let bytesCopied = 0 ;
467
469
468
470
this . sndDatapkt . dataLen = this . sndDatapkt . offset ;
469
- if ( this . sndDatapkt . dataLen < this . sndDatapkt . bufLen ) {
471
+ if ( this . sndDatapkt . dataLen < this . sndDatapkt . bufLen || ! this . sndDatapkt . bufLen ) {
470
472
bytesCopied = this . sndDatapkt . fillBuf ( userBuf , offset , len ) ;
471
473
len -= bytesCopied ;
472
474
offset += bytesCopied ;
@@ -591,7 +593,6 @@ class NetworkSession {
591
593
let error = 0 ;
592
594
if ( this . controlPkt . errno ) { /* Control pkt already read */
593
595
error = this . controlPkt . errno ;
594
- this . controlPkt . clear ( ) ; /* Clear error */
595
596
return ( error ) ;
596
597
} else if ( ! this . getOption ( constants . HEALTHCHECK ) ) {
597
598
return errors . ERR_CONNECTION_CLOSED ;
@@ -602,7 +603,6 @@ class NetworkSession {
602
603
if ( packet . type == constants . NSPTCNL ) {
603
604
this . controlPkt . fromPacket ( packet ) ;
604
605
error = this . controlPkt . errno ;
605
- this . controlPkt . clear ( ) ; /* Clear error */
606
606
return ( error ) ;
607
607
} else {
608
608
this . ntAdapter . packets . unshift ( packet ) ; /* Push packet back */
0 commit comments