JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/dns/quic/__pycache__/_asyncio.cpython-39.pyc

a

�M�e��@s�ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z
ddlZ
ddlZ
ddl
mZmZmZmZmZGdd�de�ZGdd�de�ZGdd�de�ZdS)	�N)�QUIC_MAX_DATAGRAM�AsyncQuicConnection�AsyncQuicManager�BaseQuicStream�
UnexpectedEOFcs`eZdZ�fdd�Zdd�Zdd�Zddd	�Zddd�Zd
d�Zdd�Z	dd�Z
dd�Z�ZS)�AsyncioQuicStreamcst��||�t��|_dS�N)�super�__init__�asyncio�	Condition�_wake_up)�self�
connection�	stream_id��	__class__��5/usr/lib/python3.9/site-packages/dns/quic/_asyncio.pyr
szAsyncioQuicStream.__init__c	�sN|j4IdH�&|j��IdHWd�IdHqJ1IdHs@0YdSr)r
�wait�rrrr�_wait_for_wake_upsz#AsyncioQuicStream._wait_for_wake_upc�sb|�|�}|j�|�rdS||_zt�|��|�IdHWntyTtj	j
�Yn0d|_qdS)Nr)Z_timeout_from_expiration�_bufferZhaveZ
_expectingr�wait_forr�TimeoutError�dns�	exception�Timeout)r�amount�
expiration�timeoutrrrr"s
zAsyncioQuicStream.wait_forNc�sP|�|�}|�d|�IdHt�d|j�d��\}|�||�IdH|j�|�S)N�z!H)Z_expiration_from_timeoutr�struct�unpackr�get)rr r�sizerrr�receive.s

zAsyncioQuicStream.receiveFc�s&|�|�}|j�|j||�IdHdSr)Z_encapsulate�_connection�writeZ
_stream_id)r�datagram�is_end�datarrr�send5s
zAsyncioQuicStream.sendc	�sT|�||�rP|j4IdH� |j��Wd�IdHqP1IdHsF0YdSr)Z_common_add_inputr
�notify)rr+r*rrr�
_add_input9szAsyncioQuicStream._add_inputc�s|��dSr)Z_closerrrr�close>szAsyncioQuicStream.closec�s|Srrrrrr�
__aenter__CszAsyncioQuicStream.__aenter__c	�sV|��IdH|j4IdH� |j��Wd�IdHqR1IdHsH0YdS�NF)r/r
r-)r�exc_type�exc_val�exc_tbrrr�	__aexit__Fs4zAsyncioQuicStream.__aexit__)N)F)
�__name__�
__module__�__qualname__r
rrr&r,r.r/r0r5�
__classcell__rrrrrs

rcsbeZdZd�fdd�	Zdd�Zdd�Zdd	�Zd
d�Zdd
d�Zdd�Z	ddd�Z
dd�Z�ZS)�AsyncioQuicConnectionNcsJt��||||||�d|_t��|_t��|_t��|_d|_	d|_
dSr)r	r
�_socketr�Event�_handshake_complete�_socket_createdr�_wake_timer�_receiver_task�_sender_task)rr�address�port�source�source_portZmanagerrrrr
Ns


zAsyncioQuicConnection.__init__c�s�z��z6tj�|j�}tj�d�}|�|tjd|j	|j
d|j
df�IdH|_|j�
�|j4IdH��|j�s|j�td�IdH\}}|d|j
dksj|d|j
dkr�qj|j�||t���|j4IdH� |j��Wd�IdHqj1IdH�s0YqjWd�IdH�q:1IdH�s00YWnt�yPYn0Wd|_|j4IdH�"|j��Wd�IdH�q�1IdH�s�0Y|j�
�nZd|_|j4IdH�"|j��Wd�IdH�q�1IdH�s�0Y|j�
�0dS)Nrr�T)rZinetZaf_for_addressZ_addressZasyncbackendZget_backendZmake_socket�socketZ
SOCK_DGRAM�_source�_peerr;r>�set�_doneZrecvfromrr'Zreceive_datagram�timer?�
notify_all�	Exceptionr=)r�afZbackendr)rBrrr�	_receiverWs6�
�$j8�8zAsyncioQuicConnection._receiverc	�sN|j4IdH�&|j��IdHWd�IdHqJ1IdHs@0YdSr)r?rrrrr�_wait_for_wake_timerusz*AsyncioQuicConnection._wait_for_wake_timerc�s�|j��IdH|js�|j�t���}|D].\}}||jks@J�|j�||jd�IdHq*|�	�\}}zt
�|��|�IdHWnt
y�Yn0|�|�|��IdHqdSr)r>rrKr'Zdatagrams_to_sendrLrIr;ZsendtoZ_get_timer_valuesrrrQrNZ
_handle_timer�_handle_events)rZ	datagramsr)rBr�intervalrrr�_senderys
zAsyncioQuicConnection._senderc�s�d}|j��}|durdSt|tjjj�rT|j�|j	�}|r�|�
|j|j�IdHnrt|tjjj
�rp|j��nVt|tjjj�r�d|_|j��n4t|tjjj�r�|j�|j	�}|r�|�
dd�IdH|d7}|dkrd}t�d�IdHqdS)NrT�rF�
)r'Z
next_event�
isinstance�aioquicZquicZeventsZStreamDataReceived�_streamsr$rr.r+Z
end_streamZHandshakeCompletedr=rJZConnectionTerminatedrKr@�cancelZStreamResetr�sleep)r�countZevent�streamrrrrR�s*
z$AsyncioQuicConnection._handle_eventsFc	�sX|j�|||�|j4IdH� |j��Wd�IdHqT1IdHsJ0YdSr)r'Zsend_stream_datar?rM)rr]r+r*rrrr(�szAsyncioQuicConnection.writecCs.|jr
dSt�|���|_t�|���|_dSr)�_closedrZTaskrPr@rTrArrrr�run�szAsyncioQuicConnection.runc�sfzt�|j��|�IdHWnty6tjj�Yn0|jrBt	�|j
�d�}t||�}||j
|<|Sr1)rrr=rrrrrrKrr'Zget_next_available_stream_idrrY)rr rr]rrr�make_stream�s

z!AsyncioQuicConnection.make_streamc	�s�|js�|j�|jd|jd�d|_|j��|j��|j4IdH� |j�	�Wd�IdHq~1IdHst0Yz|j
IdHWntjy�Yn0z|j
IdHWntjy�Yn0|j��IdHdS)NrrFT)r^Z_manager�closedrIr'r/r>rJr?rMr@rZCancelledErrorrAr;rrrrr/�s 

4zAsyncioQuicConnection.close)N)F)N)
r6r7r8r
rPrQrTrRr(r_r`r/r9rrrrr:Ms	

r:cs@eZdZdejdf�fdd�	Zd
dd�Zd	d
�Zdd�Z�Z	S)�AsyncioQuicManagerNcst��||t|�dSr)r	r
r:)rZconfZverify_modeZserver_namerrrr
�szAsyncioQuicManager.__init__�UrTcCs&|�|||||�\}}|r"|��|Sr)Z_connectr_)rrBrCrDrEZwant_session_ticketr�startrrr�connect�s
�zAsyncioQuicManager.connectc�s|Srrrrrrr0�szAsyncioQuicManager.__aenter__c�s*t|j���}|D]}|��IdHqdSr1)�listZ_connections�valuesr/)rr2r3r4Zconnectionsrrrrr5�szAsyncioQuicManager.__aexit__)rcNrT)
r6r7r8�sslZ
CERT_REQUIREDr
rer0r5r9rrrrrb�s
�

rb)rrGrhr"rLZaioquic.quic.configurationrXZaioquic.quic.connectionZaioquic.quic.eventsZdns.asyncbackendrZ
dns.exceptionZdns.inetZdns.quic._commonrrrrrrr:rbrrrr�<module>s	4
Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg