summaryrefslogtreecommitdiff
path: root/vendor/github.com/miekg/dns/serve_mux.go
diff options
context:
space:
mode:
authorLibravatar Terin Stock <terinjokes@gmail.com>2025-03-09 17:47:56 +0100
committerLibravatar Terin Stock <terinjokes@gmail.com>2025-03-10 01:59:49 +0100
commit3ac1ee16f377d31a0fb80c8dae28b6239ac4229e (patch)
treef61faa581feaaeaba2542b9f2b8234a590684413 /vendor/github.com/miekg/dns/serve_mux.go
parent[chore] update URLs to forked source (diff)
downloadgotosocial-3ac1ee16f377d31a0fb80c8dae28b6239ac4229e.tar.xz
[chore] remove vendor
Diffstat (limited to 'vendor/github.com/miekg/dns/serve_mux.go')
-rw-r--r--vendor/github.com/miekg/dns/serve_mux.go122
1 files changed, 0 insertions, 122 deletions
diff --git a/vendor/github.com/miekg/dns/serve_mux.go b/vendor/github.com/miekg/dns/serve_mux.go
deleted file mode 100644
index e7f36e221..000000000
--- a/vendor/github.com/miekg/dns/serve_mux.go
+++ /dev/null
@@ -1,122 +0,0 @@
-package dns
-
-import (
- "sync"
-)
-
-// ServeMux is an DNS request multiplexer. It matches the zone name of
-// each incoming request against a list of registered patterns add calls
-// the handler for the pattern that most closely matches the zone name.
-//
-// ServeMux is DNSSEC aware, meaning that queries for the DS record are
-// redirected to the parent zone (if that is also registered), otherwise
-// the child gets the query.
-//
-// ServeMux is also safe for concurrent access from multiple goroutines.
-//
-// The zero ServeMux is empty and ready for use.
-type ServeMux struct {
- z map[string]Handler
- m sync.RWMutex
-}
-
-// NewServeMux allocates and returns a new ServeMux.
-func NewServeMux() *ServeMux {
- return new(ServeMux)
-}
-
-// DefaultServeMux is the default ServeMux used by Serve.
-var DefaultServeMux = NewServeMux()
-
-func (mux *ServeMux) match(q string, t uint16) Handler {
- mux.m.RLock()
- defer mux.m.RUnlock()
- if mux.z == nil {
- return nil
- }
-
- q = CanonicalName(q)
-
- var handler Handler
- for off, end := 0, false; !end; off, end = NextLabel(q, off) {
- if h, ok := mux.z[q[off:]]; ok {
- if t != TypeDS {
- return h
- }
- // Continue for DS to see if we have a parent too, if so delegate to the parent
- handler = h
- }
- }
-
- // Wildcard match, if we have found nothing try the root zone as a last resort.
- if h, ok := mux.z["."]; ok {
- return h
- }
-
- return handler
-}
-
-// Handle adds a handler to the ServeMux for pattern.
-func (mux *ServeMux) Handle(pattern string, handler Handler) {
- if pattern == "" {
- panic("dns: invalid pattern " + pattern)
- }
- mux.m.Lock()
- if mux.z == nil {
- mux.z = make(map[string]Handler)
- }
- mux.z[CanonicalName(pattern)] = handler
- mux.m.Unlock()
-}
-
-// HandleFunc adds a handler function to the ServeMux for pattern.
-func (mux *ServeMux) HandleFunc(pattern string, handler func(ResponseWriter, *Msg)) {
- mux.Handle(pattern, HandlerFunc(handler))
-}
-
-// HandleRemove deregisters the handler specific for pattern from the ServeMux.
-func (mux *ServeMux) HandleRemove(pattern string) {
- if pattern == "" {
- panic("dns: invalid pattern " + pattern)
- }
- mux.m.Lock()
- delete(mux.z, CanonicalName(pattern))
- mux.m.Unlock()
-}
-
-// ServeDNS dispatches the request to the handler whose pattern most
-// closely matches the request message.
-//
-// ServeDNS is DNSSEC aware, meaning that queries for the DS record
-// are redirected to the parent zone (if that is also registered),
-// otherwise the child gets the query.
-//
-// If no handler is found, or there is no question, a standard REFUSED
-// message is returned
-func (mux *ServeMux) ServeDNS(w ResponseWriter, req *Msg) {
- var h Handler
- if len(req.Question) >= 1 { // allow more than one question
- h = mux.match(req.Question[0].Name, req.Question[0].Qtype)
- }
-
- if h != nil {
- h.ServeDNS(w, req)
- } else {
- handleRefused(w, req)
- }
-}
-
-// Handle registers the handler with the given pattern
-// in the DefaultServeMux. The documentation for
-// ServeMux explains how patterns are matched.
-func Handle(pattern string, handler Handler) { DefaultServeMux.Handle(pattern, handler) }
-
-// HandleRemove deregisters the handle with the given pattern
-// in the DefaultServeMux.
-func HandleRemove(pattern string) { DefaultServeMux.HandleRemove(pattern) }
-
-// HandleFunc registers the handler function with the given pattern
-// in the DefaultServeMux.
-func HandleFunc(pattern string, handler func(ResponseWriter, *Msg)) {
- DefaultServeMux.HandleFunc(pattern, handler)
-}