It works
This commit is contained in:
parent
63c18cdb2e
commit
7c76690ad3
|
@ -101,7 +101,7 @@ func main() {
|
|||
|
||||
var srv *server
|
||||
ch := make(chan bool)
|
||||
dns.ListenAndServe("127.0.0.1:8053", srv, ch)
|
||||
go dns.ListenAndServe("127.0.0.1:8053", srv, ch)
|
||||
|
||||
forever:
|
||||
for {
|
||||
|
|
30
server.go
30
server.go
|
@ -58,6 +58,7 @@ func accepterUDP(l *net.UDPConn, ch chan *Request, quit chan bool) {
|
|||
for {
|
||||
select {
|
||||
case <-quit:
|
||||
println("quit")
|
||||
return
|
||||
default:
|
||||
r := new(Request)
|
||||
|
@ -157,19 +158,22 @@ func ListenAndServe(addr string, handler Handler, q chan bool) os.Error {
|
|||
go accepterTCP(lt, rc, qt)
|
||||
go accepterUDP(lu, rc, qu)
|
||||
|
||||
select {
|
||||
case <-q:
|
||||
/* quit received, lets stop */
|
||||
lt.Close()
|
||||
lu.Close()
|
||||
qt <- true
|
||||
qu <- true
|
||||
case r:=<-rc:
|
||||
/* request recieved */
|
||||
if r.Tcp {
|
||||
go handler.ReplyTCP(r.TCPConn, r.Addr, r.Buf)
|
||||
} else {
|
||||
go handler.ReplyUDP(r.UDPConn, r.Addr, r.Buf)
|
||||
for {
|
||||
select {
|
||||
case <-q:
|
||||
println("Closing")
|
||||
/* quit received, lets stop */
|
||||
lt.Close()
|
||||
lu.Close()
|
||||
qt <- true
|
||||
qu <- true
|
||||
case r:=<-rc:
|
||||
/* request recieved */
|
||||
if r.Tcp {
|
||||
go handler.ReplyTCP(r.TCPConn, r.Addr, r.Buf)
|
||||
} else {
|
||||
go handler.ReplyUDP(r.UDPConn, r.Addr, r.Buf)
|
||||
}
|
||||
}
|
||||
}
|
||||
return err
|
||||
|
|
Loading…
Reference in New Issue