HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib/python3.10/site-packages/dns/quic/__pycache__/_sync.cpython-310.pyc
o

!we�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddl	Zddl
ZddlZddl
mZmZmZmZmZeed�rCejZnejZGdd�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__��G/home/arjun/projects/env/lib/python3.10/site-packages/dns/quic/_sync.pyr s
zSyncQuicStream.__init__cCs�	|�|�}|j�|j�|�r	Wd�dS||_Wd�n1s&wY|j�|j�|�s9tjj	�Wd�n1sCwYd|_q)NTr)
�_timeout_from_expirationr�_buffer�have�
_expectingr�wait�dns�	exception�Timeout)r�amount�
expiration�timeoutrrr�wait_for%s
�����zSyncQuicStream.wait_forNcCs�|�|�}|�d|�|j�t�d|j�d��\}Wd�n1s$wY|�||�|j�|j�|�Wd�S1sCwYdS)N�z!H)�_expiration_from_timeoutr#r�struct�unpackr�get)rr"r!�sizerrr�receive1s
�
$�zSyncQuicStream.receiveFcCs |�|�}|j�|j||�dSr	)�_encapsulate�_connection�write�
_stream_id)r�datagram�is_end�datarrr�send:s
zSyncQuicStream.sendcCsF|�||�r!|j�|j��Wd�dS1swYdSdSr	)�_common_add_inputr�notify)rr1r0rrr�
_add_input>s
"��zSyncQuicStream._add_inputcCs4|j�
|��Wd�dS1swYdSr	)r�_close�rrrr�closeCs
"�zSyncQuicStream.closecC�|Sr	rr7rrr�	__enter__G�zSyncQuicStream.__enter__cCs>|��|j�|j��Wd�dS1swYdS�NF)r8rr4)r�exc_type�exc_val�exc_tbrrr�__exit__Js
��zSyncQuicStream.__exit__r	�F)�__name__�
__module__�__qualname__rr#r*r2r5r8r:r@�
__classcell__rrrrrs

	rcsleZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zddd
�Zdd�Z	ddd�Z
�fdd�Zdd�Z�Z
S)�SyncQuicConnectioncs�t��||||||�t�|jtjd�|_|j�|j�t��\|_	|_
|j
�d�|j�d�|jdurRz|j�
tj�|j|j��Wn
tyQ|j���wt��|_d|_t��|_dS)NrF)r
r�socket�_af�
SOCK_DGRAM�_socket�connect�_peer�
socketpair�_send_wakeup�_receive_wakeup�setblocking�_source�bindr�inet�low_level_address_tuple�	Exceptionr8r�Event�_handshake_complete�_worker_threadrr)rr�address�port�source�source_port�managerrrrrRs$
�
�
zSyncQuicConnection.__init__cCs�d}|dkrC|d7}z|j�t�}Wn
tyYdSw|j�|j�||jdt���Wd�n1s8wY|dksdSdS)Nr�
�)	rJ�recvr�BlockingIOErrorrr,�receive_datagramrL�time)r�countr/rrr�_reades���zSyncQuicConnection._readcCs*	z|j�d�Wn
tyYdSwq)NT� )rOr`rar7rrr�
_drain_wakeupps��z SyncQuicConnection._drain_wakeupc	CsVz�t�}|�|jtj|j�|�|jtj|j�|jsq|�	d�\}}|�
|�}|D]\}}|��q)|j�|�
|�|j�t���}Wd�n1sMwY|D]\}}z|j�|�WqTtyiYqTw|��|jrW|j�d|_Wd�n1s�wY|j��dS|j�d|_Wd�n1s�wY|j��w)NFT)�_selector_class�registerrJ�	selectors�
EVENT_READrerOrg�_done�_get_timer_values�selectr1r�
_handle_timerr,�datagrams_to_sendrcr2ra�_handle_eventsrW�set)	r�selr!�interval�items�key�_�	datagramsr/rrr�_workerws<


�������zSyncQuicConnection._workercCs	|j�
|j��}Wd�n1swY|durdSt|tjjj�rL|j�|j�	|j
�}Wd�n1s<wY|rK|�|j|j
�n4t|tjjj�rZ|j��n&t|tjjj�sjt|tjjj�r�|j�d|_Wd�n1s{wYq)NT)rr,�
next_event�
isinstance�aioquic�quic�events�StreamDataReceived�_streamsr(rr5r1�
end_stream�HandshakeCompletedrWrr�ConnectionTerminated�StreamResetrl)r�event�streamrrrrq�s0���
����z!SyncQuicConnection._handle_eventsFcCsF|j�|j�|||�Wd�n1swY|j�d�dS)N�)rr,�send_stream_datarNr2)rr�r1r0rrrr-�s�zSyncQuicConnection.writecCs(|jrdStj|jd�|_|j��dS)N)�target)�_closedr�ThreadryrX�startr7rrr�run�szSyncQuicConnection.runNcCsj|j�|�s
tjj�|j�|jrt�|j�	d�}t
||�}||j|<Wd�|S1s.wY|Sr<)rWrrrrrrlrr,�get_next_available_stream_idrr�)rr"rr�rrr�make_stream�s

��zSyncQuicConnection.make_streamcs8|j�t��|�Wd�dS1swYdSr	)rr
�close_stream)rrrrrr��s"�zSyncQuicConnection.close_streamcCs�|j�/|jr	Wd�dS|j�|jd|jd�d|_|j��|j�d�Wd�n1s5wY|j	�
�dS)Nrr_Tr�)rr��_manager�closedrLr,r8rNr2rX�joinr7rrrr8�s�
�zSyncQuicConnection.closerAr	)rBrCrDrrergryrqr-r�r�r�r8rErrrrrFQs

rFcsLeZdZdejdf�fdd�	Zddd�Z�fdd	�Zd
d�Zdd
�Z	�Z
S)�SyncQuicManagerNcs t��||t|�t��|_dSr	)r
rrFrrr)r�conf�verify_mode�server_namerrrr�szSyncQuicManager.__init__�UrcCsN|j�|�||||�\}}|r|��|Wd�S1s wYdSr	)r�_connectr�)rrYrZr[r\rr�rrrrK�s$�zSyncQuicManager.connectcs:|j�t��||�Wd�dS1swYdSr	)rr
r�)rrYrZrrrr��s"�zSyncQuicManager.closedcCr9r	rr7rrrr:�r;zSyncQuicManager.__enter__cCs$t|j���}|D]}|��q	dSr<)�list�_connections�valuesr8)rr=r>r?�connectionsrrrrr@�s
zSyncQuicManager.__exit__)r�Nr)rBrCrD�ssl�
CERT_REQUIREDrrKr�r:r@rErrrrr��s
r�)rjrGr�r&rrc�aioquic.quic.configurationr|�aioquic.quic.connection�aioquic.quic.events�
dns.exceptionr�dns.inet�dns.quic._commonrrrrr�hasattrrrh�SelectSelectorrrFr�rrrr�<module>s$
	2x