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