cesanta / mongoose

Embedded Web Server
https://mongoose.ws
Other
11.06k stars 2.72k forks source link

The maximum DNS response count should be a larger value #2600

Closed xfangfang closed 8 months ago

xfangfang commented 8 months ago

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 https://github.com/cesanta/mongoose/commit/e357cb3185c68069cdd6027abb9a5721a8112014, 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: https://github.com/cesanta/mongoose/issues/1749#issuecomment-1253840731

Environment

xfangfang commented 8 months ago

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.