File: //opt/alt/python37/lib/python3.7/site-packages/dns/__pycache__/asyncresolver.cpython-37.pyc
B
��f�( �
@ s� d Z ddlmZmZmZmZ ddlZddlZddl Zddl
ZddlZddlZddl
ZddlZddlZddlmZmZmZmZ ejjZejjZG dd� dejj�Zdaed�dd �Zdd�d
d�Zejj ej!j"ddd
ddddf eej#j$e%f eejj&e%f eej!j'e%f e(ee% e(e)ee* ee( eej+j, ejj-d�dd�Z.e%eeejj-d�dd�Z/eej#j$e%f ej#j$d�dd�Z0ej!j"dddfeej#j$e%f ej!j'e(ee eej+j, ej#j$d�dd�Z1dS )zAsynchronous DNS stub resolver.� )�Any�Dict�Optional�UnionN)�NXDOMAIN�NoAnswer�NotAbsolute� NoRootSOAc
@ s� e Zd ZdZejjejjdddddddf e ej
jef e ejj
ef e ejjef eee eeee ee eejj ejjd�dd�Zeeeejjd �d
d�Ze ej
jef ej
jd�d
d�ZdS )�ResolverzAsynchronous DNS stub resolver.FNTr )�qname�rdtype�rdclass�tcp�source�raise_on_no_answer�source_port�lifetime�search�backend�returnc
� s` t j�| |||||| �}|
s&t j�� }
t�� }�x*|�� \}
}|dk rJ|S |
dk sVt�d}x�|�sV|�� \}}}}|r�|
� |�I dH | �
|||j�}yjt j�
|�r�|r�t|
||||||
d�I dH }q�t|
|||||d|
d�I dH }nt jj|
||d�I dH }W n6 tk
�r6 } z|�d|�\}}w\W dd}~X Y nX |�|d�\}}|dk r\|S q\W q2W dS )a� Query nameservers asynchronously to find the answer to the question.
*backend*, a ``dns.asyncbackend.Backend``, or ``None``. If ``None``,
the default, then dnspython will use the default backend.
See :py:func:`dns.resolver.Resolver.resolve()` for the
documentation of the other parameters, exceptions, and return
type of this method.
NF)r T)Zraise_on_truncationr )�timeout)�dns�resolverZ_Resolution�asyncbackendZget_default_backend�timeZnext_request�AssertionErrorZnext_nameserver�sleepZ_compute_timeout�errorsZinetZ
is_address�_tcp�_udp�
asyncquery�https� ExceptionZquery_result)�selfr r r
r r r r r r r �
resolution�start�request�answer�doneZ
nameserver�port�backoffr �response�ex�_� r. �B/opt/alt/python37/lib/python3.7/site-packages/dns/asyncresolver.py�resolve- sX
zResolver.resolve)�ipaddr�args�kwargsr c � sF i }|� |� tjj|d<