mirror of
https://github.com/miekg/dns.git
synced 2025-08-14 21:46:58 +02:00
allow the resolver to be reconfigured on the fly
This commit is contained in:
parent
0e00511c31
commit
ad968420ec
@ -33,10 +33,11 @@ type Resolver struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// do it
|
// do it
|
||||||
func (res *Resolver) Query(msg chan MsgErr, quit chan bool) {
|
func Query(res *Resolver, msg chan MsgErr, quit chan bool) {
|
||||||
var c net.Conn
|
var c net.Conn
|
||||||
var err os.Error
|
var err os.Error
|
||||||
var in *Msg
|
var in *Msg
|
||||||
|
for {
|
||||||
select {
|
select {
|
||||||
case <-quit: // quit signal recevied
|
case <-quit: // quit signal recevied
|
||||||
println("Quiting")
|
println("Quiting")
|
||||||
@ -86,6 +87,7 @@ func (res *Resolver) Query(msg chan MsgErr, quit chan bool) {
|
|||||||
msg <- MsgErr{in, nil}
|
msg <- MsgErr{in, nil}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
println("Mag nooit hier komen")
|
println("Mag nooit hier komen")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
23
restest.go
23
restest.go
@ -8,9 +8,6 @@ import (
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
res := new(dns.Resolver) // create a new resolver
|
res := new(dns.Resolver) // create a new resolver
|
||||||
res.Servers = []string{"192.168.1.2"}
|
|
||||||
res.Timeout = 2
|
|
||||||
res.Attempts = 1
|
|
||||||
|
|
||||||
// Create a new message
|
// Create a new message
|
||||||
m := new(dns.Msg)
|
m := new(dns.Msg)
|
||||||
@ -18,11 +15,18 @@ func main() {
|
|||||||
m.Question = make([]dns.Question, 1)
|
m.Question = make([]dns.Question, 1)
|
||||||
m.Question[0] = dns.Question{"miek.nl", dns.TypeSOA, dns.ClassINET}
|
m.Question[0] = dns.Question{"miek.nl", dns.TypeSOA, dns.ClassINET}
|
||||||
|
|
||||||
|
// send config (or res with Query)
|
||||||
|
|
||||||
msgch := make(chan dns.MsgErr)
|
msgch := make(chan dns.MsgErr)
|
||||||
qch := make(chan bool)
|
qch := make(chan bool)
|
||||||
|
|
||||||
// start the resolver
|
// start the resolver
|
||||||
go res.Query(msgch, qch)
|
go dns.Query(res, msgch, qch)
|
||||||
|
|
||||||
|
// configure the resolver
|
||||||
|
res.Servers = []string{"192.168.1.2"}
|
||||||
|
res.Timeout = 2
|
||||||
|
res.Attempts = 1
|
||||||
|
|
||||||
// ask something
|
// ask something
|
||||||
msgch <- dns.MsgErr{m, nil}
|
msgch <- dns.MsgErr{m, nil}
|
||||||
@ -32,6 +36,17 @@ func main() {
|
|||||||
fmt.Printf("%v\n", in.M)
|
fmt.Printf("%v\n", in.M)
|
||||||
// kill resolver
|
// kill resolver
|
||||||
// qch <- true does not work yet
|
// qch <- true does not work yet
|
||||||
|
|
||||||
|
m.Question[0] = dns.Question{"a.miek.nl", dns.TypeTXT, dns.ClassINET}
|
||||||
|
// ask something
|
||||||
|
msgch <- dns.MsgErr{m, nil}
|
||||||
|
|
||||||
|
// wait for an reply
|
||||||
|
in = <-msgch
|
||||||
|
fmt.Printf("%v\n", in.M)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
time.Sleep(2.0e9)
|
time.Sleep(2.0e9)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user