Viewing File: /opt/hc_python/lib/python3.12/site-packages/dns/quic/__pycache__/_sync.cpython-312.pyc

�

`��g�(����ddlZddlZddlZddlZddlZddlZddlZddlZddl	Zddl
ZddlZddl
mZmZmZmZmZejZGd�de�ZGd�de�ZGd�de�Zy)	�N)�QUIC_MAX_DATAGRAM�BaseQuicConnection�BaseQuicManager�BaseQuicStream�
UnexpectedEOFc�R��eZdZ�fd�Zd�Zd�Zd
d�Zdd�Zd�Zd�Z	d�Z
d	�Z�xZS)�SyncQuicStreamc���t�|�||�tj�|_tj
�|_y�N)�super�__init__�	threading�	Condition�_wake_up�Lock�_lock)�self�
connection�	stream_id�	__class__s   ��=/opt/hc_python/lib/python3.12/site-packages/dns/quic/_sync.pyr
zSyncQuicStream.__init__s0���
����Y�/�!�+�+�-��
��^�^�%��
�c�~�	|j|�}|j5|jj|�r
	ddd�y||_ddd�|j
5|j
j
|�stjj�	ddd�d|_��#1swY�\xYw#1swY�xYw)Nr)
�_timeout_from_expirationr�_buffer�have�
_expectingr�wait�dns�	exception�Timeout)r�amount�
expiration�timeouts    r�wait_forzSyncQuicStream.wait_for#s�����3�3�J�?�G�����<�<�$�$�V�,����#)��������}�}�)�)�'�2��-�-�/�/�/�3�� �D�O�������s�B'�B'� 6B3�'B0�3B<c�b�	|j|�}|j5|jj�r
	ddd�y	ddd�|j5|jj|�stjj�	ddd���#1swY�UxYw#1swY�xYwr)	rrr�seen_endrrrr r!)rr#r$s   r�wait_for_endzSyncQuicStream.wait_for_end/s�����3�3�J�?�G�����<�<�(�(�*����*������}�}�)�)�'�2��-�-�/�/�/�3��������s�B�6B%�B"�%B.c�X�|j|�}|jj�rA|j|�|j5|j
j
�cddd�S|jd|�|j5tjd|j
jd��\}ddd�|j|�|j5|j
j|�cddd�S#1swYyxYw#1swY�XxYw#1swYyxYw)N�z!H)�_expiration_from_timeout�_connection�is_h3r(rr�get_allr%�struct�unpack�get)rr$r#�sizes    r�receivezSyncQuicStream.receive9s����2�2�7�;�
����!�!�#����j�)�����|�|�+�+�-���
�M�M�!�Z�(���� �-�-��d�l�l�.>�.>�q�.A�B�����M�M�$�
�+�����|�|�'�'��-�����������s$�	D�2D�#D �D�D� D)c�t�|j|�}|jj|j||�yr)�_encapsulater,�write�
_stream_id)r�datagram�is_end�datas    r�sendzSyncQuicStream.sendGs.��� � ��*�������t����f�=rc��|j||�r0|j5|jj�ddd�yy#1swYyxYwr)�_common_add_inputr�notify)rr:r9s   r�
_add_inputzSyncQuicStream._add_inputKs;���!�!�$��/�����
�
�$�$�&���0���s�A�A
c�f�|j5|j�ddd�y#1swYyxYwr)r�_close�rs r�closezSyncQuicStream.closePs��
�Z�Z��K�K�M��Z�Z�s�'�0c��|Sr�rBs r�	__enter__zSyncQuicStream.__enter__T����rc��|j�|j5|jj�ddd�y#1swYyxYw�NF)rCrr>)r�exc_type�exc_val�exc_tbs    r�__exit__zSyncQuicStream.__exit__Ws3���
�
��
�]�]��M�M� � �"�����s�A�A
r�F)
�__name__�
__module__�__qualname__r
r%r(r3r;r?rCrFrM�
__classcell__�rs@rr	r	s0���&�

 �0�.�>�'�
��rr	c�t��eZdZ�fd�Zd�Zd�Zd�Zd�Zd
d�Zd
�fd�	Z	d
�fd�	Z
d	�Zdd
�Z�fd�Z
d�Z�xZS)�SyncQuicConnectionc����t�|�||||||�t|jtj
d�|_|j�N	|jjtjj|j|j��|jj|j�t	j �\|_|_|j$j'd�|jj'd�t)j*�|_d|_t)j0�|_y#t$r|jj��wxYw)NrF)rr
�socket_factory�_af�socket�
SOCK_DGRAM�_socket�_source�bindr�inet�low_level_address_tuple�	ExceptionrC�connect�_peer�
socketpair�_send_wakeup�_receive_wakeup�setblockingr�Event�_handshake_complete�_worker_threadrr)rr�address�port�source�source_port�managerrs       �rr
zSyncQuicConnection.__init___s���
����W�d�F�K��Q�%�d�h�h��0A�0A�1�E����<�<�#�
����!�!��H�H�4�4�T�\�\�4�8�8�L��	
�����T�Z�Z�(�4:�4E�4E�4G�1��	�D�0����(�(��/���� � ��'�#,�?�?�#4�� �"����^�^�%��
���
����"�"�$��
�s
�
A
E�%E5c�<�d}|dkrz|dz
}	|jjt�}|j5|j
j
||jtj��ddd�|dkr�yyy#t$rYywxYw#1swY� xYw)Nr�
�)	r[�recvr�BlockingIOErrorrr,�receive_datagramrb�time)r�countr8s   r�_readzSyncQuicConnection._readrs������b�j��Q�J�E�
��<�<�,�,�->�?������ � �1�1�(�D�J�J��	�	��T��
�b�j��#�
��
����s�B�:B�	B�B�Bc�\�		|jjd��#t$rYywxYw)N� )rerrrsrBs r�
_drain_wakeupz SyncQuicConnection._drain_wakeup}s7���
��$�$�)�)�"�-���#�
��
�s��	+�+c��	tj�}|j|jtj|j
�|j|jtj|j�|js�|jd�\}}|j|�}|D]\}}|j��|j5|j|�ddd�|j�|j5|jj!t#j"��}ddd�D]!\}}	|jj%|��#|js��|j5d|_ddd�|jj)�|j*j-�y#1swY��xYw#1swY��xYw#t&$rY��wxYw#1swY�exYw#|j5d|_ddd�n#1swYnxYw|jj)�|j*j-�wxYw)NFT)�	selectors�DefaultSelector�registerr[�
EVENT_READrwrerz�_done�_get_timer_values�selectr:r�
_handle_timer�_handle_eventsr,�datagrams_to_sendrur;rsrCrh�set)	r�selr#�interval�items�key�_�	datagramsr8s	         r�_workerzSyncQuicConnection._worker�s���	+��+�+�-�C��L�L����y�';�';�T�Z�Z�H��L�L��-�-�y�/C�/C�T�EW�EW�X��j�j�)-�)?�)?��)F�&��X��
�
�8�,��#�F�C���H�H�J�$��Z�Z��&�&�z�2� ��#�#�%��Z�Z� $� 0� 0� B� B�4�9�9�;� O�I� �#,�K�H�a�����)�)�(�3�$-��j�j�"���!��
���L�L��� ��$�$�(�(�*�! �Z�� �Z��
+�����������!��
������L�L��� ��$�$�(�(�*�s��CG:�G�)$G:�
.G�;G:�G�'G:�G.�G�G:�G�G:�	G+�(G:�*G+�+G:�.G7�:
I�H�	I�H!�<Ic�l�	|j5|jj�}ddd��yt|tj
jj��r�|j��r|jj|�}|D�]\}t|tjjj�r�|j5|jj|j�}ddd�s�o|j �|j"|_n|j$�|j"|_|j&s��|j)dd���t|tjjj*�s��|j5|jj|j�}ddd�s��7|j)|j,|j&���_�nu|j5|jj|j�}ddd��r8|j)|j,|j.��nt|tj
jj0�r|j2j5�n�t|tj
jj6�r|j5d|_ddd�n|t|tj
jj:�rN|j5|jj|j�}ddd�r|j)dd���h#1swY��CxYw#1swY���xYw#1swY���xYw#1swY��nxYw#1swY�?xYw#1swY�_xYw)NTr)rr,�
next_event�
isinstance�aioquic�quic�events�StreamDataReceivedr-�_h3_conn�handle_event�h3�HeadersReceived�_streamsr1r�_headers�headers�	_trailers�stream_endedr?�DataReceivedr:�
end_stream�HandshakeCompletedrhr��ConnectionTerminatedr��StreamReset)r�event�	h3_events�h3_event�streams     rr�z!SyncQuicConnection._handle_events�sw�������(�(�3�3�5����}���%����!4�!4�!G�!G�H��:�:�<� $�
�
� :� :�5� A�I�$-��%�h��
�
�0A�0A�0Q�0Q�R�!%���)-���):�):�5�?�?�)K��",�%�#)�?�?�#:�6>�6F�6F�F�O�%+�%5�%5�%=�7?�7G�7G�F�$4�#+�#8�#8�$*�$5�$5�c�4�$@�'��'�*�*�2C�2C�2P�2P�Q�!%���)-���):�):�5�?�?�)K��",�%� &� 1� 1�(�-�-��AV�AV� W�%.�"���!%���!2�!2�5�?�?�!C��$���)�)�%�*�*�e�6F�6F�G��E�7�<�<�#6�#6�#I�#I�J��(�(�,�,�.��E�7�<�<�#6�#6�#K�#K�L��Z�Z�!%�D�J� �Z��E�7�<�<�#6�#6�#B�#B�C��Z�Z�!�]�]�.�.�u���?�F� ���%�%�c�4�0�M����",���",���
$��� �Z�� �Z�sG�M*�&M7�&N�?&N�N�&&N*�*M4�7N	�N	�N�N'�*N3c��|j5|jj|||�ddd�|jj	d�y#1swY�%xYw�N�)rr,�send_stream_datardr;)rr�r:r9s    rr6zSyncQuicConnection.write�sB��
�Z�Z����-�-�f�d�F�C�������w�'��Z�s�A�Ac���|j5t�|�	|||�ddd�|r|jj	d�yy#1swY�(xYwr�)rr�send_headersrdr;)rrr�r9rs    �rr�zSyncQuicConnection.send_headers�sD���
�Z�Z��G� ��G�V�<������"�"�7�+���Z���A�Ac���|j5t�|�	|||�ddd�|r|jj	d�yy#1swY�(xYwr�)rr�	send_datardr;)rrr:r9rs    �rr�zSyncQuicConnection.send_data�sD���
�Z�Z��G��i��v�6������"�"�7�+���Z�r�c��|jrytj|j��|_|jj�y)N)�target)�_closedr�Threadr�ri�startrBs r�runzSyncQuicConnection.run�s5���<�<��'�.�.�d�l�l�C������!�!�#rc�D�|jj|�stjj�|j
5|jrt�|jjd�}t||�}||j|<ddd�|S#1swYSxYwrI)rhrrr r!rr�rr,�get_next_available_stream_idr	r�)rr$rr�s    r�make_streamzSyncQuicConnection.make_stream�s����'�'�,�,�W�5��-�-�'�'�'�
�Z�Z��z�z�#�#��(�(�E�E�e�L�I�#�D�)�4�F�'-�D�M�M�)�$���
�
��
�s
�A	B�Bc�f��|j5t�|�	|�ddd�y#1swYyxYwr)rr�close_stream)rrrs  �rr�zSyncQuicConnection.close_stream�s!���
�Z�Z��G� ��+��Z�Z�s�'�0c��|j5|jr
	ddd�y|jj|jd|jd�d|_|j
j
�|jjd�ddd�|jj�y#1swY�$xYw)NrrqTr�)rr��_manager�closedrbr,rCrdr;ri�joinrBs rrCzSyncQuicConnection.close�s���
�Z�Z��|�|���Z�
�M�M� � ����A���
�
�1�
�>��D�L����"�"�$����"�"�7�+�
�	
��� � �"��Z�s�B9�A2B9�9CrNr)rOrPrQr
rwrzr�r�r6r�r�r�r�r�rCrRrSs@rrUrU^sA���&�&	U��+�8'1�R(�
,�,�$�	�,�#rrUc�x��eZdZdejddf�fd�	Z					d
d�Z�fd�Z�fd�Z�fd�Z	d�Z
d	�Z�xZS)�SyncQuicManagerNFc�f��t�|�||t||�tj�|_yr)rr
rUrrr)r�conf�verify_mode�server_namer�rs     �rr
zSyncQuicManager.__init__�s)���	����{�,>��R�P��^�^�%��
rc	��|j5|j||||||�\}}|r|j�|cddd�S#1swYyxYwr)r�_connectr�)	rrjrkrlrm�want_session_ticket�
want_tokenrr�s	         rrazSyncQuicManager.connectsH���Z�Z�"&�-�-���v�{�4G��#��Z������ ��
�Z�Z�s�-A�A
c�h��|j5t�|�	||�ddd�y#1swYyxYwr)rrr�)rrjrkrs   �rr�zSyncQuicManager.closeds"���
�Z�Z��G�N�7�D�)��Z�Z�s�(�1c�j��|j5t�|�	|||�ddd�y#1swYyxYwr)rr�save_session_ticket)rrjrk�ticketrs    �rr�z#SyncQuicManager.save_session_tickets%���
�Z�Z��G�'���v�>��Z�Z���)�2c�j��|j5t�|�	|||�ddd�y#1swYyxYwr)rr�
save_token)rrjrk�tokenrs    �rr�zSyncQuicManager.save_tokens%���
�Z�Z��G��w��e�4��Z�Z�r�c��|SrrErBs rrFzSyncQuicManager.__enter__rGrc�x�t|jj��}|D]}|j��yrI)�list�_connections�valuesrC)rrJrKrL�connectionsrs      rrMzSyncQuicManager.__exit__!s6���4�,�,�3�3�5�6��%�J�����&�r)iUNrTT)
rOrPrQ�ssl�
CERT_REQUIREDr
rar�r�r�rFrMrRrSs@rr�r��sF����S�%6�%6�D�U�&���� ���"*�?�5��rr�)r|rYr�r/rru�aioquic.quic.configurationr��aioquic.quic.connection�aioquic.quic.events�
dns.exceptionr�dns.inet�dns.quic._commonrrrrrrWr	rUr�rErr�<module>r�sf���
�
�
���!�����������>�^�>�BY#�+�Y#�x-�o�-r
Back to Directory File Manager