Feature: Full support for PHP 8.2 release. (#201 by @clue and #207 by @WyriHaximus)
Feature: Optimize forward compatibility with Promise v3, avoid hitting autoloader. (#202 by @clue)
Feature / Fix: Improve error reporting when custom error handler is used. (#197 by @clue)
Fix: Fix invalid references in exception stack trace. (#191 by @clue)
Minor documentation improvements. (#195 by @SimonFrings and #203 by @nhedger)
Improve test suite, update to use default loop and new reactphp/async package. (#204, #205 and #206 by @clue and #196 by @SimonFrings)
Feature: Full support for PHP 8.1 release and prepare PHP 8.2 compatibility
by refactoring Parser
to avoid assigning dynamic properties.
(#188 and #186 by @clue and #184 by @SimonFrings)
Feature / Fix: Skip invalid nameserver entries from resolv.conf
and ignore IPv6 zone IDs.
(#187 by @clue)
Feature / Fix: Reduce socket read chunk size for queries over TCP/IP. (#189 by @clue)
A major new feature release, see release announcement.
Feature: Simplify usage by supporting new default loop. (#182 by @clue)
// old (still supported)
$factory = new React\Dns\Resolver\Factory();
$resolver = $factory->create($config, $loop);
// new (using default loop)
$factory = new React\Dns\Resolver\Factory();
$resolver = $factory->create($config);
Factory
to accept complete Config
object.
Add new FallbackExecutor
and use fallback DNS servers when Config
lists multiple servers.
(#179 and #180 by @clue)// old (still supported)
$config = React\Dns\Config\Config::loadSystemConfigBlocking();
$server = $config->nameservers ? reset($config->nameservers) : '8.8.8.8';
$resolver = $factory->create($server, $loop);
// new
$config = React\Dns\Config\Config::loadSystemConfigBlocking();
if (!$config->nameservers) {
$config->nameservers[] = '8.8.8.8';
}
$resolver = $factory->create($config, $loop);
Feature: Add support for legacy SPF
record type.
(#178 by @akondas and @clue)
Fix: Fix integer overflow for TCP/IP chunk size on 32 bit platforms. (#177 by @clue)
Feature: Improve error reporting when query fails, include domain and query type and DNS server address where applicable. (#174 by @clue)
Feature: Improve error handling when sending data to DNS server fails (macOS). (#171 and #172 by @clue)
Fix: Improve DNS response parser to limit recursion for compressed labels. (#169 by @clue)
Improve test suite, use GitHub actions for continuous integration (CI). (#170 by @SimonFrings)
Improve test suite and update to PHPUnit 9.3. (#164 by @clue, #165 and #166 by @SimonFrings and #167 by @WyriHaximus)
Feature: Forward compatibility with react/promise v3. (#153 by @WyriHaximus)
Feature: Support parsing OPT
records (EDNS0).
(#157 by @clue)
Fix: Avoid PHP warnings due to lack of args in exception trace on PHP 7.4. (#160 by @clue)
Improve test suite and add .gitattributes
to exclude dev files from exports.
Run tests on PHPUnit 9 and PHP 7.4 and clean up test suite.
(#154 by @reedy, #156 by @clue and #163 by @SimonFrings)
Feature: Add TcpTransportExecutor
to send DNS queries over TCP/IP connection,
add SelectiveTransportExecutor
to retry with TCP if UDP is truncated and
automatically select transport protocol when no explicit udp://
or tcp://
scheme is given in Factory
.
(#145, #146, #147 and #148 by @clue)
Feature: Support escaping literal dots and special characters in domain names. (#144 by @clue)
Feature: Support parsing CAA
and SSHFP
records.
(#141 and #142 by @clue)
Feature: Add ResolverInterface
as common interface for Resolver
class.
(#139 by @clue)
Fix: Add missing private property definitions and
remove unneeded dependency on react/stream
.
(#140 and #143 by @clue)
This update involves a number of BC breaks due to dropped support for deprecated functionality and some internal API cleanup. We've tried hard to avoid BC breaks where possible and minimize impact otherwise. We expect that most consumers of this package will actually not be affected by any BC breaks, see below for more details:
BC break: Delete all deprecated APIs, use Query
objects for Message
questions
instead of nested arrays and increase code coverage to 100%.
(#130 by @clue)
BC break: Move $nameserver
from ExecutorInterface
to UdpTransportExecutor
,
remove advanced/internal UdpTransportExecutor
args for Parser
/BinaryDumper
and
add API documentation for ExecutorInterface
.
(#135, #137 and #138 by @clue)
BC break: Replace HeaderBag
attributes with simple Message
properties.
(#132 by @clue)
BC break: Mark all Record
attributes as required, add documentation vs Query
.
(#136 by @clue)
BC break: Mark all classes as final to discourage inheritance (#134 by @WyriHaximus)
Feature / Fix: Implement CachingExecutor
using cache TTL, deprecate old CachedExecutor
,
respect TTL from response records when caching and do not cache truncated responses.
(#129 by @clue)
Feature: Limit cache size to 256 last responses by default. (#127 by @clue)
Feature: Cooperatively resolve hosts to avoid running same query concurrently. (#125 by @clue)
Feature: Support parsing authority
and additional
records from DNS response.
(#123 by @clue)
Feature: Support dumping records as part of outgoing binary DNS message. (#124 by @clue)
Feature: Forward compatibility with upcoming Cache v0.6 and Cache v1.0 (#121 by @clue)
Improve test suite to add forward compatibility with PHPUnit 7, test against PHP 7.3 and use legacy PHPUnit 5 on legacy HHVM. (#122 by @clue)
Feature: Improve promise cancellation for DNS lookup retries and clean up any garbage references. (#118 by @clue)
Fix: Reject parsing malformed DNS response messages such as incomplete DNS response messages, malformed record data or malformed compressed domain name labels. (#115 and #117 by @clue)
Fix: Fix interpretation of TTL as UINT32 with most significant bit unset. (#116 by @clue)
Fix: Fix caching advanced MX/SRV/TXT/SOA structures. (#112 by @clue)
Feature: Add resolveAll()
method to support custom query types in Resolver
.
(#110 by @clue and @WyriHaximus)
$resolver->resolveAll('reactphp.org', Message::TYPE_AAAA)->then(function ($ips) {
echo 'IPv6 addresses for reactphp.org ' . implode(', ', $ips) . PHP_EOL;
});
Feature: Support parsing NS
, TXT
, MX
, SOA
and SRV
records.
(#104, #105, #106, #107 and #108 by @clue)
Feature: Add support for Message::TYPE_ANY
and parse unknown types as binary data.
(#104 by @clue)
Feature: Improve error messages for failed queries and improve documentation. (#109 by @clue)
Feature: Add UdpTransportExecutor
, validate incoming DNS response messages
to avoid cache poisoning attacks and deprecate legacy Executor
.
(#101 and #103 by @clue)
Feature: Forward compatibility with Cache 0.5 (#102 by @clue)
Deprecate legacy Query::$currentTime
and binary parser data attributes to clean up and simplify API.
(#99 by @clue)
Config::loadSystemConfigBlocking()
to load default system config
and support parsing DNS config on all supported platforms
(/etc/resolv.conf
on Unix/Linux/Mac and WMIC on Windows)
(#92, #93, #94 and #95 by @clue)$config = Config::loadSystemConfigBlocking();
$server = $config->nameservers ? reset($config->nameservers) : '8.8.8.8';
Remove unneeded cyclic dependency on react/socket (#96 by @clue)
Feature: Support resolving from default hosts file (#75, #76 and #77 by @clue)
This means that resolving hosts such as localhost
will now work as
expected across all platforms with no changes required:
$resolver->resolve('localhost')->then(function ($ip) {
echo 'IP: ' . $ip;
});
The new HostsExecutor
exists for advanced usage and is otherwise used
internally for this feature.
Feature: Forward compatibility with EventLoop v1.0 and v0.5 and lock minimum dependencies and work around circular dependency for tests (#70 and #71 by @clue)
Fix: Work around DNS timeout issues for Windows users (#74 by @clue)
Documentation and examples for advanced usage (#66 by @WyriHaximus)
Remove broken TCP code, do not retry with invalid TCP query (#73 by @clue)
Improve test suite by fixing HHVM build for now again and ignore future HHVM build errors and lock Travis distro so new defaults will not break the build and fix failing tests for PHP 7.1 (#68 by @WyriHaximus and #69 and #72 by @clue)
Feature: Add support for the AAAA record type to the protocol parser (#58 by @othillo)
Feature: Add support for the PTR record type to the protocol parser (#59 by @othillo)
Fix: Fix DNS timeout issues for Windows users and add forward compatibility with Stream v0.5 and upcoming v0.6 (#53 by @clue)
Improve test suite by adding PHPUnit to require-dev
(#54 by @clue)
Fix: Ensure we ignore the case of the answer (#51 by @WyriHaximus)
Feature: Add TimeoutExecutor
and simplify internal APIs to allow internal
code re-use for upcoming versions.
(#48 and #49 by @clue)
Fix: Fix handling connection and stream errors (#45 by @clue)
Feature: Add examples and forward compatibility with upcoming Socket v0.5 component (#46 and #47 by @clue)
$factory = new React\Dns\Resolver\Factory();
$cache = new MyCustomCacheInstance();
$resolver = $factory->createCached('8.8.8.8', $loop, $cache);
$promise = $resolver->resolve('reactphp.org');
$promise->cancel();