allow the resolver to be reconfigured on the fly

This commit is contained in:
Miek Gieben 2010-12-18 20:55:45 +01:00
parent 0e00511c31
commit ad968420ec
2 changed files with 65 additions and 48 deletions

View File

@ -33,10 +33,11 @@ type Resolver struct {
}
// 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 err os.Error
var in *Msg
for {
select {
case <-quit: // quit signal recevied
println("Quiting")
@ -86,6 +87,7 @@ func (res *Resolver) Query(msg chan MsgErr, quit chan bool) {
msg <- MsgErr{in, nil}
}
}
}
println("Mag nooit hier komen")
return
}

View File

@ -8,9 +8,6 @@ import (
func main() {
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
m := new(dns.Msg)
@ -18,11 +15,18 @@ func main() {
m.Question = make([]dns.Question, 1)
m.Question[0] = dns.Question{"miek.nl", dns.TypeSOA, dns.ClassINET}
// send config (or res with Query)
msgch := make(chan dns.MsgErr)
qch := make(chan bool)
// 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
msgch <- dns.MsgErr{m, nil}
@ -32,6 +36,17 @@ func main() {
fmt.Printf("%v\n", in.M)
// kill resolver
// 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)
/*