File: //lib/python3.9/site-packages/dns/__pycache__/asyncresolver.cpython-39.opt-1.pyc
a
�M�e�E � @ s� d Z ddlZddlZddlmZmZmZmZmZ ddl Z
ddlZ
ddlZ
ddl
Z
ddlZ
ddlZ
ddlZ
ddlZ
ddlZ
ddlmZmZmZmZ e
jjZe
jjZG dd� de
jj�Zdaed�dd �Z dd�d
d�Z!e
j"j#e
j$j%ddd
ddddf ee
j&j'e(f ee
j"j)e(f ee
j$j*e(f e+ee( e+e,ee- ee+ ee
j.j/ e
jj0d�dd�Z1e(eee
jj0d�dd�Z2ej3fee
j&j'e(f e,ee
jj4d�dd�Z5ee
j&j'e(f e
j&j'd�dd�Z6d(e-dd�dd�Z7e
j$j%dddfee
j&j'e(f e
j$j*e+ee ee
j.j/ e
j&j'd�dd �Z8d!ej3dfee
j&j'e(f e,e,ee ed"�d#d$�Z9e
j"j#e
j$j%ddd
ddddd!ej3dfee
j&j'e(f ee
j&j'e(f ee
j"j)e(f ee
j$j*e(f e+ee( e+e,ee- ee+ ee
j.j/ e,e,ee e
jj0d%�d&d'�Z:dS ))�Asynchronous DNS stub resolver.� N)�Any�Dict�List�Optional�Union)�NXDOMAIN�NoAnswer� NoRootSOA�NotAbsolutec
@ s� e Zd ZdZejjejjdddddddf e ej
jef e ejj
ef e ejjef eee eeee ee eejj ejjd�dd�Zeeeejjd �d
d�Zejfe ej
jef eeejjd�d
d�Ze ej
jef ej
jd�dd�Zdedd�dd�ZdS )�Resolverr FNTr ��qname�rdtype�rdclass�tcp�source�raise_on_no_answer�source_port�lifetime�search�backend�returnc
� s t j�| |||||| �}|
s&t j�� }
t�� }|�� \}
}|durF|S d}|s.|�� \}}}|rp|
�|�I dH | � |||j
�}z |j|
|||||
d�I dH }W n@ ty� } z(|�
d|�\}}W Y d}~qJW Y d}~n
d}~0 0 |�
|d�\}}|durJ|S qJq.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)�timeoutr r Zmax_sizer )�dns�resolverZ_Resolution�asyncbackendZget_default_backend�timeZnext_requestZnext_nameserver�sleep�_compute_timeout�errorsZasync_query� ExceptionZquery_result)�selfr r r r r r r r r r Z
resolution�startZrequest�answerZdone�
nameserverZbackoffr �response�ex�_� r) �5/usr/lib/python3.9/site-packages/dns/asyncresolver.py�resolve- s<