@@ -349,6 +349,7 @@ HttpProxy.prototype.buffer = function (obj) {
349
349
this . resume = function ( ) {
350
350
console . error ( "Cannot resume buffer after destroying it." ) ;
351
351
} ;
352
+
352
353
onData = onEnd = events = obj = null ;
353
354
} ,
354
355
resume : function ( ) {
@@ -414,9 +415,11 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) {
414
415
try {
415
416
res . writeHead ( 404 ) ;
416
417
res . end ( ) ;
417
- } catch ( er ) {
418
+ }
419
+ catch ( er ) {
418
420
console . error ( "res.writeHead/res.end error: %s" , er . message ) ;
419
421
}
422
+
420
423
return ;
421
424
}
422
425
@@ -492,11 +495,8 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) {
492
495
}
493
496
}
494
497
495
- try {
496
- res . end ( ) ;
497
- } catch ( er ) {
498
- console . error ( "res.end error: %s" , er . message ) ;
499
- }
498
+ try { res . end ( ) }
499
+ catch ( er ) { console . error ( "res.end error: %s" , er . message ) }
500
500
}
501
501
502
502
outgoing = {
@@ -524,11 +524,8 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) {
524
524
525
525
// `response.statusCode === 304`: No 'data' event and no 'end'
526
526
if ( response . statusCode === 304 ) {
527
- try {
528
- res . end ( ) ;
529
- } catch ( er ) {
530
- console . error ( "res.end error: %s" , er . message )
531
- }
527
+ try { res . end ( ) }
528
+ catch ( er ) { console . error ( "res.end error: %s" , er . message ) }
532
529
return ;
533
530
}
534
531
@@ -540,26 +537,24 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) {
540
537
if ( req . method !== 'HEAD' && res . writable ) {
541
538
try {
542
539
var flushed = res . write ( chunk ) ;
543
- } catch ( er ) {
540
+ }
541
+ catch ( er ) {
544
542
console . error ( "res.write error: %s" , er . message ) ;
545
- try {
546
- res . end ( ) ;
547
- } catch ( er ) {
548
- console . error ( "res.end error: %s" , er . message ) ;
549
- }
543
+
544
+ try { res . end ( ) }
545
+ catch ( er ) { console . error ( "res.end error: %s" , er . message ) }
546
+
550
547
return ;
551
548
}
552
549
}
553
550
if ( ! flushed ) {
554
- //console.error('backpressure 554');
555
551
response . pause ( ) ;
552
+
556
553
res . once ( 'drain' , function ( ) {
557
- try {
558
- response . resume ( ) ;
559
- } catch ( er ) {
560
- console . error ( "response.resume error: %s" , er . message ) ;
561
- }
554
+ try { response . resume ( ) }
555
+ catch ( er ) { console . error ( "response.resume error: %s" , er . message ) }
562
556
} ) ;
557
+
563
558
setTimeout ( function ( ) {
564
559
res . emit ( 'drain' ) ;
565
560
} , 100 ) ;
@@ -574,11 +569,9 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) {
574
569
response . on ( 'end' , function ( ) {
575
570
if ( ! errState ) {
576
571
reverseProxy . removeListener ( 'error' , proxyError ) ;
577
- try {
578
- res . end ( ) ;
579
- } catch ( er ) {
580
- console . error ( "res.end error: %s" , er . message ) ;
581
- }
572
+
573
+ try { res . end ( ) }
574
+ catch ( er ) { console . error ( "res.end error: %s" , er . message ) }
582
575
583
576
// Emit the `end` event now that we have completed proxying
584
577
self . emit ( 'end' , req , res ) ;
@@ -595,15 +588,13 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) {
595
588
if ( ! errState ) {
596
589
var flushed = reverseProxy . write ( chunk ) ;
597
590
if ( ! flushed ) {
598
- //console.error('backpressure 594');
599
591
req . pause ( ) ;
592
+
600
593
reverseProxy . once ( 'drain' , function ( ) {
601
- try {
602
- req . resume ( ) ;
603
- } catch ( er ) {
604
- console . error ( "req.resume error: %s" , er . message ) ;
605
- }
594
+ try { req . resume ( ) }
595
+ catch ( er ) { console . error ( "req.resume error: %s" , er . message ) }
606
596
} ) ;
597
+
607
598
setTimeout ( function ( ) {
608
599
reverseProxy . emit ( 'drain' ) ;
609
600
} , 100 ) ;
@@ -625,7 +616,8 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) {
625
616
if ( options . buffer ) {
626
617
if ( ! errState ) {
627
618
options . buffer . resume ( ) ;
628
- } else {
619
+ }
620
+ else {
629
621
options . buffer . destroy ( ) ;
630
622
}
631
623
}
@@ -677,15 +669,13 @@ HttpProxy.prototype._forwardRequest = function (req) {
677
669
req . on ( 'data' , function ( chunk ) {
678
670
var flushed = forwardProxy . write ( chunk ) ;
679
671
if ( ! flushed ) {
680
- //console.error('backpressure 672');
681
672
req . pause ( ) ;
673
+
682
674
forwardProxy . once ( 'drain' , function ( ) {
683
- try {
684
- req . resume ( ) ;
685
- } catch ( er ) {
686
- console . error ( "req.resume error: %s" , er . message ) ;
687
- }
675
+ try { req . resume ( ) }
676
+ catch ( er ) { console . error ( "req.resume error: %s" , er . message ) }
688
677
} ) ;
678
+
689
679
setTimeout ( function ( ) {
690
680
forwardProxy . emit ( 'drain' ) ;
691
681
} , 100 ) ;
@@ -786,21 +776,19 @@ HttpProxy.prototype.proxyWebSocketRequest = function (req, socket, head, options
786
776
self . emit ( 'websocket:outgoing' , req , socket , head , data ) ;
787
777
var flushed = reverseProxy . incoming . socket . write ( data ) ;
788
778
if ( ! flushed ) {
789
- //console.error('backpressure 777');
790
779
proxySocket . pause ( ) ;
780
+
791
781
reverseProxy . incoming . socket . once ( 'drain' , function ( ) {
792
- try {
793
- proxySocket . resume ( ) ;
794
- } catch ( er ) {
795
- console . error ( "proxySocket.resume error: %s" , er . message ) ;
796
- }
782
+ try { proxySocket . resume ( ) }
783
+ catch ( er ) { console . error ( "proxySocket.resume error: %s" , er . message ) }
797
784
} ) ;
785
+
798
786
setTimeout ( function ( ) {
799
787
reverseProxy . incoming . socket . emit ( 'drain' ) ;
800
788
} , 100 ) ;
801
789
}
802
790
}
803
- catch ( e ) {
791
+ catch ( ex ) {
804
792
detach ( ) ;
805
793
reverseProxy . incoming . socket . end ( ) ;
806
794
proxySocket . end ( ) ;
@@ -817,21 +805,19 @@ HttpProxy.prototype.proxyWebSocketRequest = function (req, socket, head, options
817
805
self . emit ( 'websocket:incoming' , reverseProxy , reverseProxy . incoming , head , data ) ;
818
806
var flushed = proxySocket . write ( data ) ;
819
807
if ( ! flushed ) {
820
- //console.error('backpressure 804');
821
808
reverseProxy . incoming . socket . pause ( ) ;
809
+
822
810
proxySocket . once ( 'drain' , function ( ) {
823
- try {
824
- reverseProxy . incoming . socket . resume ( ) ;
825
- } catch ( er ) {
826
- console . error ( "reverseProxy.incoming.socket.resume error: %s" , er . message ) ;
827
- }
811
+ try { reverseProxy . incoming . socket . resume ( ) }
812
+ catch ( ex ) { console . error ( "reverseProxy.incoming.socket.resume error: %s" , er . message ) }
828
813
} ) ;
814
+
829
815
setTimeout ( function ( ) {
830
816
proxySocket . emit ( 'drain' ) ;
831
817
} , 100 ) ;
832
818
}
833
819
}
834
- catch ( e ) {
820
+ catch ( ex ) {
835
821
detach ( ) ;
836
822
proxySocket . end ( ) ;
837
823
socket . end ( ) ;
@@ -991,23 +977,21 @@ HttpProxy.prototype.proxyWebSocketRequest = function (req, socket, head, options
991
977
socket . write ( sdata ) ;
992
978
var flushed = socket . write ( data ) ;
993
979
if ( ! flushed ) {
994
- //console.error('backpressure 974');
995
980
reverseProxy . socket . pause ( ) ;
981
+
996
982
socket . once ( 'drain' , function ( ) {
997
- try {
998
- reverseProxy . socket . resume ( ) ;
999
- } catch ( er ) {
1000
- console . error ( "reverseProxy.socket.resume error: %s" , er . message ) ;
1001
- }
983
+ try { reverseProxy . socket . resume ( ) }
984
+ catch ( er ) { console . error ( "reverseProxy.socket.resume error: %s" , er . message ) }
1002
985
} ) ;
986
+
1003
987
setTimeout ( function ( ) {
1004
988
socket . emit ( 'drain' ) ;
1005
989
} , 100 ) ;
1006
990
}
1007
991
1008
992
}
1009
993
catch ( ex ) {
1010
- proxyError ( ex )
994
+ proxyError ( ex ) ;
1011
995
}
1012
996
1013
997
// Catch socket errors
@@ -1034,7 +1018,8 @@ HttpProxy.prototype.proxyWebSocketRequest = function (req, socket, head, options
1034
1018
if ( options . buffer ) {
1035
1019
if ( ! errState ) {
1036
1020
options . buffer . resume ( ) ;
1037
- } else {
1021
+ }
1022
+ else {
1038
1023
options . buffer . destroy ( ) ;
1039
1024
}
1040
1025
}
0 commit comments