1 // Package cleanhttp offers convenience utilities for acquiring "clean"
2 // http.Transport and http.Client structs.
4 // Values set on http.DefaultClient and http.DefaultTransport affect all
5 // callers. This can have detrimental effects, esepcially in TLS contexts,
6 // where client or root certificates set to talk to multiple endpoints can end
7 // up displacing each other, leading to hard-to-debug issues. This package
8 // provides non-shared http.Client and http.Transport structs to ensure that
9 // the configuration will not be overwritten by other parts of the application
12 // The DefaultClient and DefaultTransport functions disable idle connections
13 // and keepalives. Without ensuring that idle connections are closed before
14 // garbage collection, short-term clients/transports can leak file descriptors,
15 // eventually leading to "too many open files" errors. If you will be
16 // connecting to the same hosts repeatedly from the same client, you can use
17 // DefaultPooledClient to receive a client that has connection pooling
18 // semantics similar to http.DefaultClient.