aboutsummaryrefslogtreecommitdiff
path: root/plugin/forward/persistent.go (follow)
AgeCommit message (Collapse)AuthorFilesLines
2018-09-19Cleanup ParseHostOrFile (#2100)Gravatar Miek Gieben 1-13/+13
Create plugin/pkg/transport that holds the transport related functions. This needed to be a new pkg to prevent cyclic import errors. This cleans up a bunch of duplicated code in core/dnsserver that also tried to parse a transport (now all done in transport.Parse). Signed-off-by: Miek Gieben <miek@miek.nl>
2018-07-09plugin/forward: add HealthChecker interface (#1950)Gravatar Miek Gieben 1-1/+1
* plugin/forward: add HealthChecker interface Make the HealthChecker interface and morph the current DNS health checker into that interface. Remove all whole bunch of method on Forward that didn't make sense. This is done in preparation of adding a DoH client to forward - which requires a completely different healthcheck implementation (and more, but lets start here) Signed-off-by: Miek Gieben <miek@miek.nl> * Use protocol Signed-off-by: Miek Gieben <miek@miek.nl> * Dial doesnt need to be method an Forward either Signed-off-by: Miek Gieben <miek@miek.nl> * Address comments Address various comments on the PR. Signed-off-by: Miek Gieben <miek@miek.nl>
2018-06-15Plugin/Forward - autotune the dialTimeout for connection (#1852)Gravatar Francois Tur 1-34/+19
* - implement an auto-tunable dialTimeout for fallback. * - fix gofmt * - factorized timeout computation with readTimeout / updated readme / * - fix comment
2018-05-25plugin/forward: erase expired connections by timer (#1782)Gravatar Ruslan Drozhdzh 1-13/+54
* plugin/forward: erase expired connection by timer - in previous implementation, the expired connections resided in cache until new request to the same upstream/protocol came. In case if the upstream was unhealthy new request may come long time later or may not come at all. All this time expired connections held system resources (file descriptors, ephemeral ports). In my fix the expired connections and related resources are released by timer - decreased the complexity of taking connection from cache. The list of connections is treated as stack (LIFO queue), i.e. the connection is taken from the end of queue (the most fresh connection) and returned to the end (as it was implemented before). The remarkable thing is that all connections in the stack appear to be ordered by 'used' field - the cleanup() method finds the first good (not expired) connection in stack with binary search, since all connections are ordered by 'used' field * fix race conditions * minor enhancement * add comments
2018-04-26plugin/forward: move Dial goroutine out (#1738)Gravatar Miek Gieben 1-39/+25
Rework the TestProxyClose - close the proxy in the *same* goroutine as where we started it. Close channels as long as we don't get dataraces (this may need another fix). Move the Dial goroutine out of the connManager - this simplifies things *and* makes another goroutine go away and removes the need for connErr channels - can now just be dns.Conn. Also: Revert "plugin/forward: gracefull stop (#1701)" This reverts commit 135377bf776295d8ef86081c1ef581e7b41d26f0. Revert "rework TestProxyClose (#1735)" This reverts commit 9e8893a0b5325a76b2784958bbe743ff3e831401.
2018-04-24plugin/forward: close channels when connManager returns (#1727)Gravatar Miek Gieben 1-1/+8
Close a bunch of channels, also change the test to just use a for loop with a counter.
2018-04-24plugin/forward: remove lenc and lencOut channels (#1726)Gravatar Miek Gieben 1-29/+8
Remove these 2 channels, as they were only used in testing and complicate things if we want to do a clean stop() Less is more.
2018-04-06plugin/forward: retry on cached tcp connection closed by peer (#1655)Gravatar Ruslan Drozhdzh 1-8/+9
* plugin/forward: retry on cached tcp connection closed by peer * fix linter warnings * fixed unit test * modify error message
2018-02-15plugin/forward using pkg/up (#1493)Gravatar Miek Gieben 1-12/+31
* plugin/forward: on demand healtchecking Only start doing health checks when we encouner an error (any error). This uses the new pluing/pkg/up package to abstract away the actual checking. This reduces the LOC quite a bit; does need more testing, unit testing and tcpdumping a bit. * fix tests * Fix readme * Use pkg/up for healthchecks * remove unused channel * more cleanups * update readme * * Again do go generate and go build; still referencing the wrong forward repo? Anyway fixed. * Use pkg/up for doing the healtchecks to cut back on unwanted queries * Change up.Func to return an error instead of a boolean. * Drop the string target argument as it doesn't make sense. * Add healthcheck test on failing to get an upstream answer. TODO(miek): double check Forward and Lookup and how they interact with HC, and if we correctly call close() on those * actual test * Tests here * more tests * try getting rid of host * Get rid of the host indirection * Finish removing hosts * moar testing * import fmt * field is not used * docs * move some stuff * bring back health_check * maxfails=0 test * git and merging, bah * review
2018-02-05plugin/forward: add it (#1447)Gravatar Miek Gieben 1-0/+148
* plugin/forward: add it This moves coredns/forward into CoreDNS. Fixes as a few bugs, adds a policy option and more tests to the plugin. Update the documentation, test IPv6 address and add persistent tests. * Always use random policy when spraying * include scrub fix here as well * use correct var name * Code review * go vet * Move logging to metrcs * Small readme updates * Fix readme