1
0
mirror of https://github.com/danog/dns.git synced 2024-11-30 04:29:06 +01:00

Add explanation comments

This commit is contained in:
Niklas Keller 2017-06-27 18:35:57 +02:00
parent 8dca65bcd4
commit 1a1427ce10
2 changed files with 6 additions and 3 deletions

View File

@ -337,10 +337,13 @@ final class BasicResolver implements Resolver {
} }
private function getSocket($uri): Promise { private function getSocket($uri): Promise {
// We use a new socket for each UDP request, as that increases the entropy and mitigates response forgery.
if (\substr($uri, 0, 3) === "udp") { if (\substr($uri, 0, 3) === "udp") {
return UdpSocket::connect($uri); return UdpSocket::connect($uri);
} }
// Over TCP we might reuse sockets if the server allows to keep them open. Sequence IDs in TCP are already
// better than a random port. Additionally, a TCP connection is more expensive.
if (isset($this->sockets[$uri])) { if (isset($this->sockets[$uri])) {
return new Success($this->sockets[$uri]); return new Success($this->sockets[$uri]);
} }

View File

@ -26,7 +26,7 @@ abstract class Socket {
/** @var ResourceOutputStream */ /** @var ResourceOutputStream */
private $output; private $output;
/** @var array */ /** @var array Contains already sent queries with no response yet. For UDP this is exactly zero or one item. */
private $pending = []; private $pending = [];
/** @var MessageFactory */ /** @var MessageFactory */
@ -35,13 +35,13 @@ abstract class Socket {
/** @var callable */ /** @var callable */
private $onResolve; private $onResolve;
/** @var int */ /** @var int Used for determining whether the socket can be garbage collected, because it's inactive. */
private $lastActivity; private $lastActivity;
/** @var bool */ /** @var bool */
private $receiving = false; private $receiving = false;
/** @var array */ /** @var array Queued requests if the number of concurrent requests is too large. */
private $queue = []; private $queue = [];
/** /**