@@ -752,100 +752,108 @@ func TestAcceptReturnsErrorWhenConnPolicyFuncErrors(t *testing.T) {
752
752
}
753
753
754
754
func TestReadingIsRefusedWhenProxyHeaderRequiredButMissing (t * testing.T ) {
755
- l , err := net . Listen ( "tcp" , "127.0.0.1:0" )
756
- if err != nil {
757
- t . Fatalf ( "err: %v" , err )
755
+ policyFuncs := [] PolicyFunc {
756
+ func ( upstream net. Addr ) ( Policy , error ) { return REQUIRE , nil },
757
+ func ( upstream net. Addr ) ( Policy , error ) { return REFUSE , nil },
758
758
}
759
+ for _ , policyFunc := range policyFuncs {
760
+ l , err := net .Listen ("tcp" , "127.0.0.1:0" )
761
+ if err != nil {
762
+ t .Fatalf ("err: %v" , err )
763
+ }
759
764
760
- policyFunc := func ( upstream net. Addr ) ( Policy , error ) { return REQUIRE , nil }
765
+ pl := & Listener { Listener : l , Policy : policyFunc }
761
766
762
- pl := & Listener {Listener : l , Policy : policyFunc }
767
+ cliResult := make (chan error )
768
+ go func () {
769
+ conn , err := net .Dial ("tcp" , pl .Addr ().String ())
770
+ if err != nil {
771
+ cliResult <- err
772
+ return
773
+ }
774
+ defer conn .Close ()
763
775
764
- cliResult := make (chan error )
765
- go func () {
766
- conn , err := net .Dial ("tcp" , pl .Addr ().String ())
776
+ if _ , err := conn .Write ([]byte ("ping" )); err != nil {
777
+ cliResult <- err
778
+ return
779
+ }
780
+
781
+ close (cliResult )
782
+ }()
783
+
784
+ conn , err := pl .Accept ()
767
785
if err != nil {
768
- cliResult <- err
769
- return
786
+ t .Fatalf ("err: %v" , err )
770
787
}
771
788
defer conn .Close ()
772
789
773
- if _ , err := conn .Write ([]byte ("ping" )); err != nil {
774
- cliResult <- err
775
- return
790
+ recv := make ([]byte , 4 )
791
+ if _ , err = conn .Read (recv ); err != ErrNoProxyProtocol {
792
+ t .Fatalf ("Expected error %v, received %v" , ErrNoProxyProtocol , err )
793
+ }
794
+ err = <- cliResult
795
+ if err != nil {
796
+ t .Fatalf ("client error: %v" , err )
776
797
}
777
-
778
- close (cliResult )
779
- }()
780
-
781
- conn , err := pl .Accept ()
782
- if err != nil {
783
- t .Fatalf ("err: %v" , err )
784
- }
785
- defer conn .Close ()
786
-
787
- recv := make ([]byte , 4 )
788
- if _ , err = conn .Read (recv ); err != ErrNoProxyProtocol {
789
- t .Fatalf ("Expected error %v, received %v" , ErrNoProxyProtocol , err )
790
- }
791
- err = <- cliResult
792
- if err != nil {
793
- t .Fatalf ("client error: %v" , err )
794
798
}
795
799
}
796
800
797
801
func TestReadingIsRefusedWhenProxyHeaderPresentButNotAllowed (t * testing.T ) {
798
- l , err := net . Listen ( "tcp" , "127.0.0.1:0" )
799
- if err != nil {
800
- t . Fatalf ( "err: %v" , err )
802
+ policyFuncs := [] PolicyFunc {
803
+ func ( upstream net. Addr ) ( Policy , error ) { return REJECT , nil },
804
+ func ( upstream net. Addr ) ( Policy , error ) { return REFUSE , nil },
801
805
}
806
+ for _ , policyFunc := range policyFuncs {
807
+ l , err := net .Listen ("tcp" , "127.0.0.1:0" )
808
+ if err != nil {
809
+ t .Fatalf ("err: %v" , err )
810
+ }
802
811
803
- policyFunc := func ( upstream net. Addr ) ( Policy , error ) { return REJECT , nil }
812
+ pl := & Listener { Listener : l , Policy : policyFunc }
804
813
805
- pl := & Listener {Listener : l , Policy : policyFunc }
814
+ cliResult := make (chan error )
815
+ go func () {
816
+ conn , err := net .Dial ("tcp" , pl .Addr ().String ())
817
+ if err != nil {
818
+ cliResult <- err
819
+ return
820
+ }
821
+ defer conn .Close ()
822
+ header := & Header {
823
+ Version : 2 ,
824
+ Command : PROXY ,
825
+ TransportProtocol : TCPv4 ,
826
+ SourceAddr : & net.TCPAddr {
827
+ IP : net .ParseIP ("10.1.1.1" ),
828
+ Port : 1000 ,
829
+ },
830
+ DestinationAddr : & net.TCPAddr {
831
+ IP : net .ParseIP ("20.2.2.2" ),
832
+ Port : 2000 ,
833
+ },
834
+ }
835
+ if _ , err := header .WriteTo (conn ); err != nil {
836
+ cliResult <- err
837
+ return
838
+ }
806
839
807
- cliResult := make (chan error )
808
- go func () {
809
- conn , err := net .Dial ("tcp" , pl .Addr ().String ())
840
+ close (cliResult )
841
+ }()
842
+
843
+ conn , err := pl .Accept ()
810
844
if err != nil {
811
- cliResult <- err
812
- return
845
+ t .Fatalf ("err: %v" , err )
813
846
}
814
847
defer conn .Close ()
815
- header := & Header {
816
- Version : 2 ,
817
- Command : PROXY ,
818
- TransportProtocol : TCPv4 ,
819
- SourceAddr : & net.TCPAddr {
820
- IP : net .ParseIP ("10.1.1.1" ),
821
- Port : 1000 ,
822
- },
823
- DestinationAddr : & net.TCPAddr {
824
- IP : net .ParseIP ("20.2.2.2" ),
825
- Port : 2000 ,
826
- },
848
+
849
+ recv := make ([]byte , 4 )
850
+ if _ , err = conn .Read (recv ); err != ErrSuperfluousProxyHeader {
851
+ t .Fatalf ("Expected error %v, received %v" , ErrSuperfluousProxyHeader , err )
827
852
}
828
- if _ , err := header . WriteTo ( conn ); err != nil {
829
- cliResult <- err
830
- return
853
+ err = <- cliResult
854
+ if err != nil {
855
+ t . Fatalf ( "client error: %v" , err )
831
856
}
832
-
833
- close (cliResult )
834
- }()
835
-
836
- conn , err := pl .Accept ()
837
- if err != nil {
838
- t .Fatalf ("err: %v" , err )
839
- }
840
- defer conn .Close ()
841
-
842
- recv := make ([]byte , 4 )
843
- if _ , err = conn .Read (recv ); err != ErrSuperfluousProxyHeader {
844
- t .Fatalf ("Expected error %v, received %v" , ErrSuperfluousProxyHeader , err )
845
- }
846
- err = <- cliResult
847
- if err != nil {
848
- t .Fatalf ("client error: %v" , err )
849
857
}
850
858
}
851
859
func TestIgnorePolicyIgnoresIpFromProxyHeader (t * testing.T ) {
0 commit comments