cesanta / mongoose

Embedded Web Server

Home Page:https://mongoose.ws

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

The maximum DNS response count should be a larger value

xfangfang opened this issue · comments

  • My goal is: connect to a websocket server
  • My actions were: websocket
  • My expectation was: sucess connect to the server
  • The result I saw: DNS timeout
  • My question is:

If a domain's DNS response is more than 15 IPs, mongoose will automatically ignore the returned results then DNS timeout will be reported by mongoose. Modify the num_answers to a larger value, and the problem disappears.

Through the commit e357cb3, the maximum number of DNS responses has increased from 10 to 15, but in some cases it is still insufficient:

The two domain below all have 20 DNS responses:

ubuntu@VM-8-15-ubuntu:~$ host live.bilibili.com
live.bilibili.com is an alias for a.w.bilicdn1.com.
a.w.bilicdn1.com is an alias for ct.w.bilicdn1.com.
ct.w.bilicdn1.com has address 119.84.174.66
ct.w.bilicdn1.com has address 114.230.222.141
ct.w.bilicdn1.com has address 119.84.174.68
ct.w.bilicdn1.com has address 124.239.244.15
ct.w.bilicdn1.com has address 124.239.244.16
ct.w.bilicdn1.com has address 124.239.244.17
ct.w.bilicdn1.com has address 124.239.244.18
ct.w.bilicdn1.com has address 183.131.147.27
ct.w.bilicdn1.com has address 183.131.147.28
ct.w.bilicdn1.com has address 183.131.147.29
ct.w.bilicdn1.com has address 183.131.147.30
ct.w.bilicdn1.com has address 183.131.147.48
ct.w.bilicdn1.com has address 110.40.30.32
ct.w.bilicdn1.com has address 110.40.30.33
ct.w.bilicdn1.com has address 110.40.30.34
ct.w.bilicdn1.com has address 114.230.222.138
ct.w.bilicdn1.com has address 114.230.222.139
ct.w.bilicdn1.com has address 114.230.222.140
ct.w.bilicdn1.com has address 119.84.174.67
ct.w.bilicdn1.com has address 117.23.60.15

ubuntu@VM-8-15-ubuntu:~$ nslookup api.bilibili.com 8.8.8.8
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
api.bilibili.com        canonical name = a.w.bilicdn1.com.
a.w.bilicdn1.com        canonical name = ct.w.bilicdn1.com.
Name:   ct.w.bilicdn1.com
Address: 183.131.147.29
Name:   ct.w.bilicdn1.com
Address: 183.131.147.30
Name:   ct.w.bilicdn1.com
Address: 183.131.147.48
Name:   ct.w.bilicdn1.com
Address: 110.40.30.32
Name:   ct.w.bilicdn1.com
Address: 110.40.30.33
Name:   ct.w.bilicdn1.com
Address: 110.40.30.34
Name:   ct.w.bilicdn1.com
Address: 114.230.222.138
Name:   ct.w.bilicdn1.com
Address: 114.230.222.139
Name:   ct.w.bilicdn1.com
Address: 114.230.222.140
Name:   ct.w.bilicdn1.com
Address: 114.230.222.141
Name:   ct.w.bilicdn1.com
Address: 114.230.222.142
Name:   ct.w.bilicdn1.com
Address: 117.21.179.18
Name:   ct.w.bilicdn1.com
Address: 117.21.179.19
Name:   ct.w.bilicdn1.com
Address: 117.21.179.20
Name:   ct.w.bilicdn1.com
Address: 117.23.60.12
Name:   ct.w.bilicdn1.com
Address: 117.23.60.13
Name:   ct.w.bilicdn1.com
Address: 117.23.60.14
Name:   ct.w.bilicdn1.com
Address: 117.23.60.15
Name:   ct.w.bilicdn1.com
Address: 119.84.174.66
Name:   ct.w.bilicdn1.com
Address: 119.84.174.67

It seems that there have been similar issues before: #1749 (comment)

Environment

  • mongoose version: 7.12
  • Target hardware/board: macbook

Sorry for wasting your time, I just updated the description.

When mongoose connects to a domain, its internal DNS resolution checks the DNS response count. When the number is too large, it ignores the results. But it seems that some domain exceeding 15, in these cases, DNS timeout will be reported.