Skip to content

Commit

Permalink
add timeout and err handle
Browse files Browse the repository at this point in the history
  • Loading branch information
SeanZH committed Apr 30, 2021
1 parent 17a4463 commit 63c6dd5
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 15 deletions.
13 changes: 2 additions & 11 deletions .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 7 additions & 2 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,17 @@ type MongoClientConfig struct {
}

func NewMongoClient(conf *MongoClientConfig) *MongoClient {
client, err := mongo.NewClient(options.Client().ApplyURI(conf.Addr))
client, err := mongo.NewClient(options.Client().
ApplyURI(conf.Addr).
SetConnectTimeout(time.Second * 2).
SetHeartbeatInterval(time.Second * 10).
SetSocketTimeout(time.Second * 2).
SetServerSelectionTimeout(time.Second *2))
if err != nil {
log.Println("new client error:", conf.Addr, err)
return nil
}
ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
err = client.Connect(ctx)
if err != nil {
Expand Down
10 changes: 8 additions & 2 deletions dns.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,25 +19,31 @@ func ParseReqInfo(r *dns.Msg) (err error) {
}

type Handler struct {
M *RecordManager
M *RecordManager
ServFailMsg *dns.Msg
}

func NewHandler(conf *MongoClientConfig) *Handler {
m := NewRecordManager(conf)
return &Handler{M: m}
return &Handler{M: m, ServFailMsg: new(dns.Msg)}
}

func (h *Handler) ServeDNS(w dns.ResponseWriter, r *dns.Msg) {
log.Print("Client:", w.RemoteAddr())
log.Println("au:", r.Authoritative, "tr:", r.Truncated, "rd:", r.RecursionDesired, "ra:", r.RecursionAvailable, "ad:", r.AuthenticatedData, "cd:", r.CheckingDisabled)
h.ServFailMsg.SetReply(r)
err := ParseReqInfo(r)
if err != nil {
h.ServFailMsg.MsgHdr.Rcode = dns.RcodeBadName
log.Println("bad dns request:", err)
w.WriteMsg(h.ServFailMsg)
return
}
msg, err := h.GetRecord(r)
if err != nil {
h.ServFailMsg.MsgHdr.Rcode = dns.RcodeServerFailure
log.Println("get record error:", err)
w.WriteMsg(h.ServFailMsg)
return
}
w.WriteMsg(msg)
Expand Down

0 comments on commit 63c6dd5

Please sign in to comment.