861cc857b1
Move localhost fallback generation to Config, use cloudflare DNS as DNS fallback
2018-12-24 16:23:04 +01:00
2cc9e78a96
Resolve localhost locally as per RFC 6761
2018-12-24 13:12:09 +01:00
e943bcfde7
Use google DNS if cannot load config
2018-12-24 12:49:01 +01:00
Niklas Keller
d8d497458a
Improve error messages
2018-05-01 19:55:02 +02:00
Austin Heap
41d02a30bb
Use ext-filter instead of inet_pton to avoid error suppression ( #73 )
2018-03-31 17:56:32 +02:00
Niklas Keller
2c8133a7b4
Allow empty domain names to be decoded
...
This is a rather long standing issue. LibDNS didn't allow to decode empty domain names. Empty domain names were previously only observed with PTR records, but were now also observed in regular queries in authoritative records that include the root nameservers.
LibDNS 2.0 mainly adds scalar types has just a few breaking changes. We don't expose it anywhere, so an upgrade is perfectly fine.
Fixes #53 .
2018-01-10 17:26:11 +01:00
Niklas Keller
16e6d6c22f
Limit cache size by default to 256 entries
...
Fixes #65 .
2017-12-16 19:59:47 +01:00
Bob Weinand
cbaa517c8a
Fix #68 - cyclic reference within BasicResolver->gcWatcher
2017-11-07 16:18:49 +01:00
Niklas Keller
36ef1a6959
Prevent UDP sockets from leaking and close sockets on timeouts
2017-11-07 09:42:42 +01:00
Niklas Keller
1a41089d84
Fix BasicResolver::resolve to break redirect loop
...
Previously we queried domains usually five times (max redirects). It didn't have much impact, because these records were usually cached and immediately returned again, but this resulted in the TTL always being NULL due to cached records being returned.
2017-09-12 17:08:38 +02:00
Niklas Keller
dd6e3c294a
Improve example formatting and add PTR example
2017-09-12 17:05:40 +02:00
Niklas Keller
fcdf01de72
Add Record::getName to translate record types to names
2017-09-12 17:04:41 +02:00
Robert Goldsmith
4005ff4d32
Fix a precedence issue whee supplying your own ConfigLoader to the BasicResolver resulted in a WindowsConfigLoader being instantiated instead.
2017-08-09 18:53:33 +02:00
Niklas Keller
a5ccdd9a08
Fix up previous commit for concurrent config loading
2017-07-13 21:17:16 +02:00
Niklas Keller
474787af05
Don't load config multiple times concurrently
2017-07-13 21:02:59 +02:00
Niklas Keller
d382d71fc7
Implement proper fix for the OPCache issue
2017-07-01 15:44:10 +02:00
Niklas Keller
c1c552d752
Add php-src bug reference
2017-07-01 12:19:09 +02:00
Niklas Keller
e0fc018ad7
Work around OPCache issue
2017-07-01 10:52:56 +02:00
Niklas Keller
f9f0c6cdc8
Fix queries over TCP, add tests
2017-06-29 12:36:09 +02:00
Niklas Keller
1a1427ce10
Add explanation comments
2017-06-27 18:35:57 +02:00
Niklas Keller
8dca65bcd4
Move socket classes into an internal namespace
2017-06-27 18:30:28 +02:00
Niklas Keller
bd78869bcd
Rename Server to Socket
...
Server was pretty weird, they're sockets. These classes were marked as
@internal before, so this is not a BC break.
2017-06-27 17:47:57 +02:00
Niklas Keller
ee05df2e1e
Use random IDs and different UDP ports for each request
...
This is another countermeasure as outlined in https://tools.ietf.org/html/rfc5452 . Request IDs have 16 bits of entropy now. The port will change during requests, but is usually not random. However, there are systems that use a random port for :0 port requests.
2017-06-27 17:35:53 +02:00
Niklas Keller
58b9ed1035
Match question section of responses to the asked question
...
This makes forging responses and poisoning the cache harder and is one method suggested in https://tools.ietf.org/html/rfc5452 .
2017-06-27 16:55:24 +02:00
Niklas Keller
cbffb766f3
Restrict caching to max one day
2017-06-25 21:00:30 +02:00
Aaron Piotrowski
3aaf2708f7
Use flag to control reading requests
2017-06-24 00:50:34 -05:00
Niklas Keller
ad55bcf870
Fix host loading on Windows
2017-06-24 01:18:12 +02:00
Aaron Piotrowski
70205d9282
Store deferred in question array before receiving
...
Also avoid creating unnecessary exception instances.
2017-06-23 18:05:11 -05:00
Niklas Keller
46cc8e47c7
Remove normalizeDnsName and isValidDnsName, as they're in amphp/uri now
2017-06-24 00:53:10 +02:00
Aaron Piotrowski
6a2e666a80
Consolidate error handling
2017-06-23 16:25:50 -05:00
Niklas Keller
8271989335
Fix garbage collection and mark classes as final / internal
2017-06-23 21:07:59 +02:00
Niklas Keller
fd7c82113c
Fix retrying, wrap non-ResolutionExceptions in ResolutionException
2017-06-23 20:51:50 +02:00
Niklas Keller
dd938ce846
Clean up unused sockets
2017-06-23 19:13:28 +02:00
Niklas Keller
b0aa8daeca
Implement timeout for queries
2017-06-23 18:57:22 +02:00
Niklas Keller
015ac39f08
Fix BasicResolver::reloadConfig
2017-06-23 18:43:04 +02:00
Niklas Keller
a10643fa37
Fix issue with type restricted resolve and add test
2017-06-23 18:35:48 +02:00
Niklas Keller
9ed331ae3d
Implement request sharing for concurrent requests to the same resource
2017-06-23 17:48:03 +02:00
Niklas Keller
1bd8870003
Fix code style
2017-06-23 17:37:40 +02:00
Aaron Piotrowski
a4b714c0b0
Keep receiving if there are still pending requests
2017-06-23 10:06:30 -05:00
Niklas Keller
f536ddfd8a
Purge requests if they're still in the map after 65k requests in between
2017-06-23 15:34:12 +02:00
Niklas Keller
2d5a7ab37b
Change appveyor.yml, it's enough to run one version of PHP on Windows
2017-06-23 14:37:04 +02:00
Niklas Keller
b05d11912b
Fix resolution data and add CNAME / DNAME support
2017-06-23 14:23:04 +02:00
Niklas Keller
05a413f72c
Error out if type is restricted and passed name is an IP but not of that type
2017-06-23 13:39:20 +02:00
Niklas Keller
ea1cd633dd
Add BasicResolver::reloadConfig() and move docs to interface
2017-06-23 13:32:04 +02:00
Niklas Keller
affebb612a
Delete DefaultDriver
2017-06-23 13:15:15 +02:00
Niklas Keller
ebdf4a663e
Implement resolve in BasicResolver
2017-06-23 13:14:51 +02:00
Niklas Keller
0331eadcc8
Implement TCP retry and server reuse
2017-06-23 12:49:16 +02:00
Niklas Keller
48e37f4014
Implement caching and name normalization in BasicResolver
2017-06-23 09:24:26 +02:00
Niklas Keller
f0a67f5619
Refactor TcpServer connect logic and fix its parser
2017-06-23 08:39:49 +02:00
Aaron Piotrowski
c250d471c8
WIP
2017-06-23 00:34:11 -05:00