@@ -3824,6 +3824,51 @@ func TestTransportResponseDataBeforeHeaders(t *testing.T) {
3824
3824
ct .run ()
3825
3825
}
3826
3826
3827
+ func TestTransportRequestsLowServerLimit (t * testing.T ) {
3828
+ st := newServerTester (t , func (w http.ResponseWriter , r * http.Request ) {
3829
+ }, optOnlyServer , func (s * Server ) {
3830
+ s .MaxConcurrentStreams = 1
3831
+ })
3832
+ defer st .Close ()
3833
+
3834
+ var (
3835
+ connCountMu sync.Mutex
3836
+ connCount int
3837
+ )
3838
+ tr := & Transport {
3839
+ TLSClientConfig : tlsConfigInsecure ,
3840
+ DialTLS : func (network , addr string , cfg * tls.Config ) (net.Conn , error ) {
3841
+ connCountMu .Lock ()
3842
+ defer connCountMu .Unlock ()
3843
+ connCount ++
3844
+ return tls .Dial (network , addr , cfg )
3845
+ },
3846
+ }
3847
+ defer tr .CloseIdleConnections ()
3848
+
3849
+ const reqCount = 3
3850
+ for i := 0 ; i < reqCount ; i ++ {
3851
+ req , err := http .NewRequest ("GET" , st .ts .URL , nil )
3852
+ if err != nil {
3853
+ t .Fatal (err )
3854
+ }
3855
+ res , err := tr .RoundTrip (req )
3856
+ if err != nil {
3857
+ t .Fatal (err )
3858
+ }
3859
+ if got , want := res .StatusCode , 200 ; got != want {
3860
+ t .Errorf ("StatusCode = %v; want %v" , got , want )
3861
+ }
3862
+ if res != nil && res .Body != nil {
3863
+ res .Body .Close ()
3864
+ }
3865
+ }
3866
+
3867
+ if connCount != 1 {
3868
+ t .Errorf ("created %v connections for %v requests, want 1" , connCount , reqCount )
3869
+ }
3870
+ }
3871
+
3827
3872
// tests Transport.StrictMaxConcurrentStreams
3828
3873
func TestTransportRequestsStallAtServerLimit (t * testing.T ) {
3829
3874
const maxConcurrent = 2
0 commit comments