Scott Baker | 2d89798 | 2019-09-24 11:50:08 -0700 | [diff] [blame] | 1 | // Package cleanhttp offers convenience utilities for acquiring "clean" |
| 2 | // http.Transport and http.Client structs. |
| 3 | // |
| 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 |
| 10 | // or dependencies. |
| 11 | // |
| 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. |
| 19 | // |
| 20 | package cleanhttp |