JFIF$        dd7 

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

a

�M�e��@s�ddlZddlZddlZddlZddlZddlZddlZddlZddl	Zddl
ZddlZddl
mZmZmZmZmZeed�r�ejZnejZGdd�de�ZGdd�de�ZGdd	�d	e�ZdS)
�N)�QUIC_MAX_DATAGRAM�BaseQuicConnection�BaseQuicManager�BaseQuicStream�
UnexpectedEOF�PollSelectorcsXeZdZ�fdd�Zdd�Zddd�Zdd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
�ZS)�SyncQuicStreamcs&t��||�t��|_t��|_dS�N)�super�__init__�	threading�	Condition�_wake_up�Lock�_lock)�self�
connection�	stream_id��	__class__��2/usr/lib/python3.9/site-packages/dns/quic/_sync.pyr s
zSyncQuicStream.__init__cCs�|�|�}|j�2|j�|�r.Wd�dS||_Wd�n1sH0Y|j�$|j�|�sntjj	�Wd�n1s�0Yd|_qdS)Nr)
Z_timeout_from_expirationr�_bufferZhaveZ
_expectingr�wait�dns�	exception�Timeout)r�amount�
expiration�timeoutrrr�wait_for%s
$&zSyncQuicStream.wait_forNcCs�|�|�}|�d|�|j�&t�d|j�d��\}Wd�n1sH0Y|�||�|j�|j�|�Wd�S1s�0YdS)N�z!H)Z_expiration_from_timeoutr r�struct�unpackr�get)rrr�sizerrr�receive1s
4zSyncQuicStream.receiveFcCs |�|�}|j�|j||�dSr	)Z_encapsulate�_connection�writeZ
_stream_id)r�datagram�is_end�datarrr�send:s
zSyncQuicStream.sendcCs@|�||�r<|j�|j��Wd�n1s20YdSr	)Z_common_add_inputr�notify)rr+r*rrr�
_add_input>szSyncQuicStream._add_inputcCs2|j�|��Wd�n1s$0YdSr	)rZ_close�rrrr�closeCszSyncQuicStream.closecCs|Sr	rr/rrr�	__enter__GszSyncQuicStream.__enter__cCs<|��|j�|j��Wd�n1s.0YdS�NF)r0rr-)r�exc_type�exc_val�exc_tbrrr�__exit__Js(zSyncQuicStream.__exit__)N)F)�__name__�
__module__�__qualname__rr r&r,r.r0r1r6�
__classcell__rrrrrs
	
rcsleZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zddd
�Zdd�Z	ddd�Z
�fdd�Zdd�Z�Z
S)�SyncQuicConnectioncs�t��||||||�t�|jtjd�|_|jdurrz|j�tj	�
|j|j��Wntyp|j���Yn0|j�
|j�t��\|_|_|j�d�|j�d�t��|_d|_t��|_dS)NrF)r
r�socketZ_afZ
SOCK_DGRAM�_socket�_sourceZbindrZinetZlow_level_address_tuple�	Exceptionr0�connect�_peerZ
socketpair�_send_wakeup�_receive_wakeupZsetblockingr�Event�_handshake_complete�_worker_threadrr)rr�address�port�source�source_portZmanagerrrrrRs"
�

zSyncQuicConnection.__init__cCs|d}|dkrx|d7}z|j�t�}Wnty8YdS0|j�&|j�||jt���Wd�q1sl0YqdS)Nr�
�)	r=�recvr�BlockingIOErrorrr'Zreceive_datagramrA�time)r�countr)rrr�_readeszSyncQuicConnection._readcCs,z|j�d�Wqty$YdS0qdS)N� )rCrMrNr/rrr�
_drain_wakeuppsz SyncQuicConnection._drain_wakeupc	Cs��zDt�}|�|jtj|j�|�|jtj|j�|j�s|�	d�\}}|�
|�}|D]\}}|��qV|j�|�
|�Wd�n1s�0Y|��|j� |j�t���}Wd�n1s�0Y|D].\}}z|j�|�Wq�t�yYq�0q�q2W|j�d|_Wd�n1�s20Y|j��n:|j�d|_Wd�n1�sl0Y|j��0dS)NFT)�_selector_class�registerr=�	selectorsZ
EVENT_READrQrCrS�_doneZ_get_timer_valuesZselectr+rZ
_handle_timer�_handle_eventsr'Zdatagrams_to_sendrOr,rNrE�set)	rZselr�interval�items�key�_Z	datagramsr)rrr�_workerws2

(.&�&zSyncQuicConnection._workercCsL|j�|j��}Wd�n1s&0Y|dur<dSt|tjjj�r�|j�|j�	|j
�}Wd�n1sv0Y|r�|�|j|j
�qt|tjjj�r�|j��qt|tjjj�r�|j�d|_Wd�n1s�0Yqt|tjjj�r|j�|j�	|j
�}Wd�n1�s,0Y|r|�dd�qdS)NT�)rr'Z
next_event�
isinstance�aioquicZquicZeventsZStreamDataReceived�_streamsr$rr.r+Z
end_streamZHandshakeCompletedrErYZConnectionTerminatedrWZStreamReset)rZevent�streamrrrrX�s&(,&.z!SyncQuicConnection._handle_eventsFcCsF|j� |j�|||�Wd�n1s,0Y|j�d�dS)N�)rr'Zsend_stream_datarBr,)rrcr+r*rrrr(�s.zSyncQuicConnection.writecCs(|jr
dStj|jd�|_|j��dS)N)�target)�_closedr�Threadr^rF�startr/rrr�run�szSyncQuicConnection.runNcCsh|j�|�stjj�|j�:|jr&t�|j�	d�}t
||�}||j|<Wd�n1sZ0Y|Sr2)rErrrrrrWrr'Zget_next_available_stream_idrrb)rrrrcrrr�make_stream�s
(zSyncQuicConnection.make_streamcs6|j�t��|�Wd�n1s(0YdSr	)rr
�close_stream)rrrrrrk�szSyncQuicConnection.close_streamcCs�|j�\|jrWd�dS|j�|jd|jd�d|_|j��|j�d�Wd�n1sh0Y|j	�
�dS)NrrLTrd)rrfZ_manager�closedrAr'r0rBr,rF�joinr/rrrr0�s
*zSyncQuicConnection.close)F)N)r7r8r9rrQrSr^rXr(rirjrkr0r:rrrrr;Qs

r;csXeZdZdejdf�fdd�	Zddd�Z�fd	d
�Z�fdd�Zd
d�Z	dd�Z
�ZS)�SyncQuicManagerNcs t��||t|�t��|_dSr	)r
rr;rrr)rZconfZverify_modeZserver_namerrrr�szSyncQuicManager.__init__�UrTcCsP|j�6|�|||||�\}}|r*|��|Wd�S1sB0YdSr	)rZ_connectri)rrGrHrIrJZwant_session_ticketrrhrrrr@�s
�zSyncQuicManager.connectcs8|j�t��||�Wd�n1s*0YdSr	)rr
rl)rrGrHrrrrl�szSyncQuicManager.closedcs:|j� t��|||�Wd�n1s,0YdSr	)rr
�save_session_ticket)rrGrHZticketrrrrp�sz#SyncQuicManager.save_session_ticketcCs|Sr	rr/rrrr1�szSyncQuicManager.__enter__cCs$t|j���}|D]}|��qdSr2)�listZ_connections�valuesr0)rr3r4r5Zconnectionsrrrrr6�s
zSyncQuicManager.__exit__)roNrT)r7r8r9�sslZ
CERT_REQUIREDrr@rlrpr1r6r:rrrrrn�s�
rn)rVr<rsr"rrOZaioquic.quic.configurationraZaioquic.quic.connectionZaioquic.quic.eventsZ
dns.exceptionrZdns.inetZdns.quic._commonrrrrr�hasattrrrTZSelectSelectorrr;rnrrrr�<module>s"	
2|
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