HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/lib/python3/dist-packages/twisted/internet/__pycache__/_resolver.cpython-38.pyc
U

J0�[R!�@s~dZddlmZmZeZddlmZmZm	Z	m
Z
mZmZm
Z
ddlmZddlmZmZmZmZddlmZddlmZddlmZdd	lmZmZdd
lmZddl m!Z!ddl"m#Z#ee�Gd
d�de$��Z%e&eeg�Z'e&eg�ee&eg�e	e'e
iZ(eee	eiZ)eed�Z*edediZ+ee�Gdd�de$��Z,ee�Gdd�de$��Z-ee�Gdd�de$��Z.ee�Gdd�de$��Z/dS)z=
IPv6-aware hostname resolution.

@see: L{IHostnameResolver}
�)�division�absolute_import)�getaddrinfo�AF_INET�AF_INET6�	AF_UNSPEC�SOCK_STREAM�
SOCK_DGRAM�gaierror)�implementer)�IHostnameResolver�IHostResolution�IResolverSimple�IResolutionReceiver)�DNSLookupError)�Deferred)�deferToThreadPool)�IPv4Address�IPv6Address)�nativeString)�
_idnaBytes)�Loggerc@seZdZdZdd�ZdS)�HostResolutionz9
    The in-progress resolution of a given hostname.
    cCs
||_dS)zA
        Create a L{HostResolution} with the given name.
        N)�name)�selfr�r�</usr/lib/python3/dist-packages/twisted/internet/_resolver.py�__init__%szHostResolution.__init__N)�__name__�
__module__�__qualname__�__doc__rrrrrrsr)�TCP�UDPr"r#c@s(eZdZdZdefdd�Zd	dd�ZdS)
�GAIResolverzp
    L{IHostnameResolver} implementation that resolves hostnames by calling
    L{getaddrinfo} in a thread.
    NcCs$||_|dkr|jn||_||_dS)a�
        Create a L{GAIResolver}.

        @param reactor: the reactor to schedule result-delivery on
        @type reactor: L{IReactorThreads}

        @param getThreadPool: a function to retrieve the thread pool to use for
            scheduling name resolutions.  If not supplied, the use the given
            C{reactor}'s thread pool.
        @type getThreadPool: 0-argument callable returning a
            L{twisted.python.threadpool.ThreadPool}

        @param getaddrinfo: a reference to the L{getaddrinfo} to use - mainly
            parameterized for testing.
        @type getaddrinfo: callable with the same signature as L{getaddrinfo}
        N)�_reactor�
getThreadPool�_getThreadPool�_getaddrinfo)rZreactorr&rrrrrMs
�zGAIResolver.__init__rr"csr���}t|dkrtnt|��t|������fdd�}t�j||�}t��}	��|	�|j	�fdd��}
|	S)�<
        See L{IHostnameResolver.resolveHostName}

        @param resolutionReceiver: see interface

        @param hostName: see interface

        @param portNumber: see interface

        @param addressTypes: see interface

        @param transportSemantics: see interface

        @return: see interface
        Ncs0z�������WStk
r*gYSXdS�N)r(r
r)�
addressFamily�hostName�
portNumberr�
socketTyperr�getys
�z(GAIResolver.resolveHostName.<locals>.getcsD|D]2\}}}}}t|}��|t�|d�f|���q���dS�Nr")�	_afToType�addressResolved�_socktypeToTyper/�resolutionComplete)�resultZfamilyZsocktype�protoZ	cannonameZsockaddrZaddrType��resolutionReceiverrr�deliverResults�s�z3GAIResolver.resolveHostName.<locals>.deliverResults)
r'�
_typesToAF�_any�	frozenset�_transportToSocketrr%r�resolutionBegan�addCallback)rr8r,r-�addressTypes�transportSemanticsZpoolr/�d�
resolutionr9r)r+r,r-r8rr.r�resolveHostNameds�
zGAIResolver.resolveHostName)rNr")rrr r!rrrDrrrrr$Fs�r$c@s(eZdZdZe�Zdd�Zd	dd�ZdS)
�SimpleResolverComplexifierzF
    A converter from L{IResolverSimple} to L{IHostnameResolver}.
    cCs
||_dS)zW
        Construct a L{SimpleResolverComplexifier} with an L{IResolverSimple}.
        N)�_simpleResolver)rZsimpleResolverrrrr�sz#SimpleResolverComplexifier.__init__rNr"cs�z��d��Wntk
r*t���YnXt���t��}��|��j���}��fdd�}��fdd�}	|�||	��fdd�}
|�	|
�|S)r)�asciics��td|���dSr0)r2r)�address)r-r8rr�addressReceived�s
�zCSimpleResolverComplexifier.resolveHostName.<locals>.addressReceivedcs$|�t�s �jjd|��jd�dS)Nz'while looking up {name} with {resolver})rZresolver)Zcheckr�_logZfailurerF)�error)r,rrr�
errorReceived�s
�zASimpleResolverComplexifier.resolveHostName.<locals>.errorReceivedcs���dSr*)r4)r5r7rr�finish�sz:SimpleResolverComplexifier.resolveHostName.<locals>.finish)
�encode�UnicodeEncodeErrorrrrr>rF�
getHostByNameZaddCallbacksr?)rr8r,r-r@rArCZ	onAddressrIrLrMr)r,r-r8rrrD�s

z*SimpleResolverComplexifier.resolveHostName)rNr")rrr r!rrJrrDrrrrrE�s�rEc@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�FirstOneWinszT
    An L{IResolutionReceiver} which fires a L{Deferred} with its first result.
    cCs||_d|_dS)zp
        @param deferred: The L{Deferred} to fire when the first resolution
            result arrives.
        FN)�	_deferred�	_resolved)rZdeferredrrrr�szFirstOneWins.__init__cCs
||_dS)z�
        See L{IResolutionReceiver.resolutionBegan}

        @param resolution: See L{IResolutionReceiver.resolutionBegan}
        N)�_resolution)rrCrrrr>�szFirstOneWins.resolutionBegancCs"|jr
dSd|_|j�|j�dS)z�
        See L{IResolutionReceiver.addressResolved}

        @param address: See L{IResolutionReceiver.addressResolved}
        NT)rSrR�callbackZhost)rrHrrrr2�szFirstOneWins.addressResolvedcCs"|jr
dS|j�t|jj��dS)z?
        See L{IResolutionReceiver.resolutionComplete}
        N)rSrRZerrbackrrTr)rrrrr4�szFirstOneWins.resolutionCompleteN)rrr r!rr>r2r4rrrrrQ�s
		rQc@s"eZdZdZdd�Zddd�ZdS)	�ComplexResolverSimplifierzE
    A converter from L{IHostnameResolver} to L{IResolverSimple}
    cCs
||_dS)z�
        Create a L{ComplexResolverSimplifier} with an L{IHostnameResolver}.

        @param nameResolver: The L{IHostnameResolver} to use.
        N)�
_nameResolver)rZnameResolverrrrrsz"ComplexResolverSimplifier.__init__rcCs"t�}|j�t|�|dtg�|S)z�
        See L{IResolverSimple.getHostByName}

        @param name: see L{IResolverSimple.getHostByName}

        @param timeouts: see L{IResolverSimple.getHostByName}

        @return: see L{IResolverSimple.getHostByName}
        r)rrWrDrQr)rrZtimeoutsr5rrrrP
s

�z'ComplexResolverSimplifier.getHostByNameN)r)rrr r!rrPrrrrrV�s	rVN)0r!Z
__future__rr�typeZ
__metaclass__Zsocketrrrrrr	r
Zzope.interfacerZtwisted.internet.interfacesrr
rrZtwisted.internet.errorrZtwisted.internet.deferrZtwisted.internet.threadsrZtwisted.internet.addressrrZtwisted.python.compatrZtwisted.internet._idnarZtwisted.loggerr�objectrr<r;r:r1r=r3r$rErQrVrrrr�<module>sV$
����G?-