blob: 05841092a7b34896d87f547ae5044122ee8ef086 [file] [log] [blame]
William Kurkianea869482019-04-09 15:16:11 -04001// 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//
20package cleanhttp