File tree Expand file tree Collapse file tree 2 files changed +28
-1
lines changed Expand file tree Collapse file tree 2 files changed +28
-1
lines changed Original file line number Diff line number Diff line change @@ -530,5 +530,11 @@ func setRequestLogging(c httpClient) {
530530 logger .Warningf ("client: cannot use request logger with HTTP client of type %T" , c )
531531 return
532532 }
533- standardHTTPClient .Transport = & requestLoggerTransport {rt : standardHTTPClient .Transport }
533+ // Do not wrap transport if it is already a logger
534+ // As client is a pointer, changing transport will change given client
535+ // If the same httpClient is used in multiple scwClient, it would add multiple logger transports
536+ _ , isLogger := standardHTTPClient .Transport .(* requestLoggerTransport )
537+ if ! isLogger {
538+ standardHTTPClient .Transport = & requestLoggerTransport {rt : standardHTTPClient .Transport }
539+ }
534540}
Original file line number Diff line number Diff line change @@ -40,6 +40,27 @@ func TestNewClientWithNoAuth(t *testing.T) {
4040 })
4141}
4242
43+ func TestNewClientMultipleClients (t * testing.T ) {
44+ t .Run ("Basic" , func (t * testing.T ) {
45+ logger .EnableDebugMode ()
46+ httpClient := & http.Client {}
47+ _ , err := NewClient (WithHTTPClient (httpClient ))
48+ testhelpers .AssertNoError (t , err )
49+
50+ _ , isLogger := httpClient .Transport .(* requestLoggerTransport )
51+ testhelpers .Assert (t , isLogger , "transport should be a request logger" )
52+
53+ _ , err = NewClient (WithHTTPClient (httpClient ))
54+ testhelpers .AssertNoError (t , err )
55+
56+ transport , isLogger := httpClient .Transport .(* requestLoggerTransport )
57+ testhelpers .Assert (t , isLogger , "transport should be a request logger" )
58+ _ , isLogger = transport .rt .(* requestLoggerTransport )
59+ testhelpers .Assert (t , ! isLogger , "nested transport should not be a request logger" )
60+
61+ })
62+ }
63+
4364func TestNewClientWithDefaults (t * testing.T ) {
4465 options := []ClientOption {
4566 WithInsecure (),
You can’t perform that action at this time.
0 commit comments