403Webshell
Server IP : 138.197.107.151  /  Your IP : 216.73.217.120
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux BloxBy-Builder 6.8.0-71-generic #71-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 22 16:52:38 UTC 2025 x86_64
User : wpbetasites_mrakzqskir ( 1022)
PHP Version : 8.3.6
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/h11/tests/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/h11/tests/__pycache__/test_connection.cpython-312.pyc
�

t0c@���@�ddlmZmZmZmZmZmZmZddlZddl	m
Z
mZmZm
Z
mZddlmZmZmZmZmZmZmZddlmZmZmZmZmZmZmZmZm Z m!Z!m"Z"ddl#m$Z$m%Z%m&Z&dd	l'm(Z(m)Z)m*Z*d*d�Z+d*d�Z,d*d
�Z-d*d�Z.d*d�Z/d*d�Z0d*d�Z1d*d�Z2d*d�Z3d*d�Z4d*d�Z5d*d�Z6d*d�Z7d*d�Z8d*d�Z9d*d�Z:d*d�Z;d*d�Z<d*d�Z=d*d�Z>d*d�Z?d*d �Z@d*d!�ZAd*d"�ZBej�j�d#gd$��d#eEd
dfd%��ZFej�j�d#gd&��d#eEd
dfd'��ZGd*d(�ZHd*d)�ZIy)+�)�Any�cast�Dict�List�Optional�Tuple�TypeN�)�
_body_framing�_keep_alive�
Connection�	NEED_DATA�PAUSED)�ConnectionClosed�Data�EndOfMessage�Event�InformationalResponse�Request�Response)�CLIENT�CLOSED�DONE�ERROR�IDLE�MIGHT_SWITCH_PROTOCOL�
MUST_CLOSE�	SEND_BODY�
SEND_RESPONSE�SERVER�SWITCHED_PROTOCOL)�LocalProtocolError�RemoteProtocolError�Sentinel�)�ConnectionPair�get_all_events�receive_and_get�returnc��ttdddg���sJ�ttddddg���rJ�ttddddg���rJ�ttddgd���rJ�ttd	g�
��sJ�ttd	dg�
��rJ�ttd	dg�
��rJ�ttd	gd���rJ�y)N�GET�/)�HostzExample.com��method�target�headers�r
�close)r
za, b, cLOse, foo�1.0�r/r0r1�http_version����status_coder1�r9r1r6)rrr���;/usr/lib/python3/dist-packages/h11/tests/test_connection.py�test__keep_aliver> s����u�S�3J�2K�L��������,�.E�F�	
��������,�.P�Q�	
������u�S�"�5�I�����x�C��<�=�=�=��8��>U�=V�W�X�X�X���S�+M�*N�O�����8��R�e�T�U�U�U�Ur<c	�.��dttdtdttt
t
ffd��	ddtdttdtdtf�fd�
}ddttdtdtf�fd�
}iddidd	idd	d
�fD]Y}ttt
tf|�}d|di|��fd|ddd
i|��fd|dddi|��ffD]\}}t||�dk(r�J��[dd	idd	d
�fD]L}ttt
tf|�}d|di|��fd|di|��ffD]\}}t||�dk(r�J��Nd|d��fd|d��ffD]\}}t||�dk(r�J�td|��dk(sJ�td|��dk(sJ�y)N�cl�ter)c�l�g}|�|jdt|�f�|r|jd�|S)N�Content-Length�zTransfer-Encoding�chunked)�append�str)r@rAr1s   r=r1z#test__body_framing.<locals>.headers?s7����
�>��N�N�,�c�"�g�6�7�
��N�N�;�<��r<r9c�,��t|�||���S)Nr8)r)r9r@rAr1s   �r=�respz test__body_framing.<locals>.respGs����K���R��I�Ir<c�>���||�}|dgz
}tdd|��S)N�r-zexample.comr+r,r.)r)r@rA�hr1s   �r=�reqztest__body_framing.<locals>.reqLs+����B��O��	�%�
&�&���e�C��;�;r<�dT)r@rA�HEAD�GET��i0)�content-length)r)rEr;)r@)rR)rN)zhttp/1.0r;)r7NF)NFr;)r�int�boolrrrGrrrrrr)rIrM�kwargs�meth�rr1s     @r=�test__body_framingrX>s����H�S�M��t���U�3��8�_�0E��FK�J��J�$,�S�M�J�>B�J�	�J�
<���
�<�$�<�7�<���c�{�T�4�L��D�2I�J�F���d�3��8�n�f�-��
�d�n�V�n�%�
�T�4�c�4�V�4�5�
�T�4�c�4�V�4�5�
�	F�G�D�!�
!��q�)�-E�E�E�E�	F�F��$�<��4�!8�9�=���d�3��8�n�f�-���s�}�V�}�-����v��/G�H�	=�G�D�!� ��q�)�_�<�<�<�	=�=��3�#�;�'�&�$�#�,�)?�@�D���a��T�1�%�)C�C�C�C�D���s�u�%�)A�A�A�A�����(�,<�<�<�<r<c	��tjt�5td�ddd�t	�}|j
tjtusJ�|j
tjtusJ�|j
tjtusJ�|j
tjtusJ�|jttddddg���}|dk(sJ�|jD]'}|jttttik(r�'J�|j
tj tusJ�|j
tj"tusJ�|j
tj tusJ�|j
tj"tusJ�|j
tj$�J�|j
tj$dk(sJ�|jtt'd	g�
��}|dk(sJ�|jtt)dd
g�
��}|dk(sJ�|jD]'}|jttttik(r�'J�|j
tj$dk(sJ�|j
tj$dk(sJ�|jtt+d���}|dk(sJ�|jtt+d��t+d��t-�g��}|dk(sJ�|jtt-�g��}|dk(sJ�|jD]'}|jtt.ttik(r�'J�|jtt+d���}|dk(sJ�|jtt+d��t+d��t-�g��}|dk(sJ�|jtt-�g��}|dk(sJ�|jD]'}|jtt.tt.ik(r�'J�y#1swY��,xYw)Nrr+r,rK�rC�10r.s9GET / HTTP/1.1
Host: example.com
Content-Length: 10

�1.1rNr8sHTTP/1.1 100 

r7)rC�11s%HTTP/1.1 200 
Content-Length: 11

�12345��data�67890��expectr<�
1234567890�1)�pytest�raises�
ValueErrorr
r&�connr�our_role�
their_roler �sendr�conns�statesrr�	our_state�their_state�their_http_versionrrrrr��pr`ris   r=�)test_Connection_basics_and_content_lengthrtjs���	���z�	"���8���	��A��6�6�&�>�"�"�f�,�,�,��6�6�&�>�$�$��.�.�.��6�6�&�>�"�"�f�,�,�,��6�6�&�>�$�$��.�.�.��6�6�����,�.F�G�	
��D��T�������I���{�{�v�y�&�-�H�H�H�H�I��6�6�&�>�#�#�y�0�0�0��6�6�&�>�%�%��6�6�6��6�6�&�>�#�#�}�4�4�4��6�6�&�>�%�%��2�2�2��6�6�&�>�,�,�4�4�4��6�6�&�>�,�,��6�6�6��6�6�&�/�C��L�M�D��+�+�+�+��6�6�&�(�s�=U�<V�W�X�D��A�A�A�A����E���{�{�v�y�&�)�D�D�D�D�E�
�6�6�&�>�,�,��6�6�6��6�6�&�>�,�,��6�6�6��6�6�&�$�H�-�.�D��8�����6�6���(�#�T�x�-@�,�.�,Q���D��8�����6�6�&�,�.��6�4�D��3�;��;����@���{�{�v�t�V�Y�?�?�?�?�@�
�6�6�&�$�M�2�3�D��=� � � ��6�6�&�$�D�/�4�T�?�L�N�2S�6�T�D��4�<��<��6�6�&�,�.��6�4�D��3�;��;����;���{�{�v�t�V�T�:�:�:�:�;�}��s�Q�Qc	��t�}|jttddddg���|jtt	ddd���}|d	k(sJ�|jtt	d
dd���}|dk(sJ�|jtt	d�
�g��}|dk(sJ�|jttdg���}|dk(sJ�|jttddg���|jtt	ddd���|jtt	ddd���|jtt��|jD]'}|jttttik(r�'J�y)Nr+r,rKrDr.rdT�r`�chunk_start�	chunk_endsa
1234567890
sabcdes
5
abcde
r<r_rb)�hello�there)r1s0
hello: there

r7r8s54321r^)r&rlrrrrr rrmrnrrrs   r=�test_chunkedr{�sX����A��F�F�����,�.N�O�	
��
�6�6�&�$�M�t�t�T�U�D��)�)�)�)��6�6�&�$�H�$�$�O�P�D��$�$�$�$��6�6�&�$�C�.��6�4�D��3�;��;��6�6�&�,�0B�/C�D�E�D��/�/�/�/��F�F���S�3S�2T�U���F�F�6�4�X�4�4�H�I��F�F�6�4�X�4�4�H�I��F�F�6�<�>�"����;���{�{�v�t�V�T�:�:�:�:�;r<c�d�tt��}d}|j|�|j�t	ddddg��k(sJ�|j�t
usJ�|jd�|j�t
d	d
d
��k(sJ�|jd�|j�t
d
d
d��k(sJ�|jd�|j�t
ddd��k(sJ�|jd�|j�t
ddd
��k(sJ�|jd�|j�t
d	d
d
��k(sJ�|jd�|j�t
k(sJ�|jd�|j�t�k(sJ�y)N�rj�BPOST / HTTP/1.1
Host: example.com
Transfer-Encoding: chunked

�POSTr,rKrDr.s
5
hello
shelloTrvs5
helshelF�lso
�os5
hello�
s0

)r
r �receive_data�
next_eventrrrr)ri�requests  r=�test_chunk_boundariesr��s����v�&�D�	��	���g���?�?�����(�*J�K�!����
�?�?��	�)�)�)����'�(��?�?���(��PT� U�U�U�U����k�"��?�?���&�d�e� T�T�T�T����d���?�?���$�E�U� S�S�S�S����h���?�?���$�E�T� R�R�R�R����m�$��?�?���(��PT� U�U�U�U����g���?�?��	�)�)�)����l�#��?�?����.�.�.r<c��tt�}|jtdddg���|jt	��|j
tusJ�t|d�tdgdd�	�gk(sJ�|j
tusJ�t|d
�td
��gk(sJ�t|d�td��gk(sJ�t|d
�t	�t�gk(sJ�|jtusJ�y)Nr+r,rKr.sHTTP/1.0 200 OK

r7r4sOK)r9r1r6�reasonr^r_rar<)r
rrlrrrorr(rrrrrpr��cs r=�$test_client_talking_to_http10_serverr��s����6��A��F�F�7�%��6M�5N�O�P��F�F�<�>���;�;�$�����1�8�9��S�"�5��O�>����
�;�;�*�$�$�$��1�h�'�D�h�,?�+@�@�@�@��1�h�'�D�h�,?�+@�@�@�@��1�c�"�|�~�7G�7I�&J�J�J�J��=�=�F�"�"�"r<c��tt�}t|d�tddgd��t	�gk(sJ�|j
tusJ�|jtdg���dk(sJ�|jtd	�
��d	k(sJ�|jt	��dk(sJ�|jtusJ�tt�}t|d�td
ddgd��td�
�gk(sJ�t|d�td�
�t	�gk(sJ�|j
tusJ�t|d�t�gk(sJ�y)N�GET / HTTP/1.0

r+r,r4r5r7r8�$HTTP/1.1 200 
Connection: close

r^r_r<s(POST / HTTP/1.0
Content-Length: 10

1rrZres	234567890)r
r r(rrrprrlrrrorr�s r=�$test_server_talking_to_http10_clientr�sa���6��A��1�7�8��u�S�"�5�I���=����
�=�=�J�&�&�&�	
���x�C��4�5�8�	9��	9�
�6�6�$�H�%�&�(�2�2�2��6�6�,�.�!�S�(�(�(��;�;�*�$�$�$�	�6��A��1�O�P����-�.��		
�	
�$��U�����1�l�+��,�0G���/X�X�X�X��=�=�J�&�&�&��1�c�"�'7�'9�&:�:�:�:r<c	���dggddgfD]�}tttttf|�}t	�}|jttdddg��t�g�|jttd|��tddg���	�tt�}t|d
�|jtd|���dk(sJ�|jtd�
��dk(r��J�y)NrD�rC�100r+r,rKr.r7r8rbr�r�r^r_)rrrrGr&rlrrrr rr
r(r)�user_headersrsr�s   r=�,test_automatic_transfer_encoding_in_responser�(s��
*�*�
�
*�+D�E��"7���D��s�C�x��1�<�@�����	�����u�S�;R�:S�T���
�	
�	
������l�;���*J�)K��	�	
�
�v�����4�5�
�F�F�8��\�B�C�<�
=�	
�
=��v�v�d��)�*�h�6�6�6�E"7r<c	��t�}|jttddddg��t	�g�|j
D]}|jttur�J�|jttdg��t	�gtddg��t	�g�	�|j
D]'}|jttttik(r�'J�y)
Nr+r,rKr2r.rQr8)�
connectionr3rb)
r&rlrrrrmrnrr r�rsris  r=�(test_automagic_connection_close_handlingr�Rs�����A��F�F�����0�2I�J�
�

�N�
	
�
����1���{�{�6�"�j�0�0�0�1��F�F��	�c�2�	.���?�
��/F�.G�H��N�
��	����G���{�{�v�z�6�:�F�F�F�F�Gr<c��dtfd�}|�}|jttdg���|jD]}|j
rJ�|js�J�|�}|jttddg���|jD]}|j
rJ�|js�J�|�}|jttd���|jD]}|j
rJ�|js�J�y)	Nr)c	��t�}|jttddgd����|jD]}|j
r�J�|jtjrJ�|jtjsJ�|S)Nr+r,)rKr�)�Expectz100-continuer.)	r&rlrrrm�"client_is_waiting_for_100_continueri�!they_are_waiting_for_100_continuer r�s  r=�setupz test_100_continue.<locals>.setupss������	��������
�	
��G�G�	;�D��:�:�:�:�	;��6�6�&�>�C�C�C�C��v�v�f�~�?�?�?�?��r<rNr8r7rDr^r_)
r&rlr rrmr�r�rrr)r�rsris   r=�test_100_continuer�rs���>��*	��A��F�F�6�(�S�"�E�F����:���:�:�:�:��9�9�9�9�:�
	��A��F�F���S�3S�2T�U�����:���:�:�:�:��9�9�9�9�:�
	��A��F�F�6�4�X�&�'����:���:�:�:�:��9�9�9�9�:r<c�2�tt�}|jd�|j�tusJ�tjt�5	|jd�|j��"#1swYnxYwttd��}|jd�|jd�|jd�t|�tdd	d
dg��t�gk(sJ�ttd
��}|jd�|jd�tjt�5|j�ddd�n#1swYnxYwttd��}|jd�|jdddzz�t|�tdd	d
dg��tddz��t�gk(sJ�ttd��}|jd�t|�tdddg��t�gk(sJ�|jd�|jtdg���|jt��|j�t|�tdddg��t�gk(sJ�|jtdg���|jt��|j�tjt�5|j�ddd�y#1swYyxYw)NsGET / HTTP/1.0
Endless: saaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai�)�max_incomplete_event_sizesGET / HTTP/1.0
Big: s�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas

r+r,r4)�big��aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)r/r0r6r1i�s%GET / HTTP/1.0
Content-Length: 10000�ai')rC�10000r_rNs GET /1 HTTP/1.1
Host: a

GET /2 HTTP/1.1
Host: b

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX�/1)�host�ar.s�XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXr7r8�/2)r��b)r
r r�r�rrfrgr#r'rrrrlr�start_next_cycler�s r=�-test_max_incomplete_event_size_countermeasurer��s����6��A��N�N�1�2��<�<�>�Y�&�&�&�	���*�	+���
�N�N�;�'�
�L�L�N�����	�6�T�:�A��N�N�-�.��N�N�;���N�N�;���!�����5�CV�BW�	
�	��	!����	�6�T�:�A��N�N�-�.��N�N�;��	���*�	+��	��������
	�6�T�:�A��N�N�=�>��N�N�;����-�.��!������0�1�		
�	
�$��,����	!�	�	�	�	�6�S�9�A��N�N�	<���!���u�T�M�?�C���!����
�N�N�;���F�F�8��R�0�1��F�F�<�>�������!���u�T�M�?�C���!�����F�F�8��R�0�1��F�F�<�>������	���*�	+��	�������s$�$A6�6A?�:E�E�3L
�
Lc��t�}|jttdddg��t	�g�|jt
t
ddg��t	�g�|jD]7}|jttt
tik(sJ�|j��9|jttdd	dg��t	�g�|jt
t
d
dg��t	�g�y)Nr+r,�r-r�r.r7�stransfer-encodingschunkedr8�DELETE�/foo�)r&rlrrrr rrmrnrr�r�s  r=�test_reuse_simpler��s�����A��F�F��	��c�M�?�	C�\�^�T���F�F����/Q�.R�S��N�	
����� ���{�{�v�t�V�T�:�:�:�:����� ��F�F���8�F�]�O�L��N�	
���F�F����/Q�.R�S��N�	
�r<c�$�tt�}|j�tusJ�|j	d�t|�t
ddddg��td��t�gk(sJ�|jtusJ�|jtusJ�|j�tusJ�|jtd	g�
��|jt��|jtusJ�|jtusJ�|j!�t|�t
ddddg��td��t�gk(sJ�|j�tusJ�|jtd	g�
��|jt��|j!�t|�t
dd
dg��t�gk(sJ�|j�tusJ�|jtd	g�
��|jt��|j�tusJ�|j	d�|j�tusJ�|j"dk(sJ�|j	d�|j"dk(sJ�|j�tusJ�|j	d�|j�tusJ�t%j&t(�5|j	d�ddd�y#1swYyxYw)Ns�GET /1 HTTP/1.1
Host: a.com
Content-Length: 5

12345GET /2 HTTP/1.1
Host: a.com
Content-Length: 5

67890GET /3 HTTP/1.1
Host: a.com

r+r�)r-�a.com)rC�5r.r^r_r7r8r�raz/3�SADF)r�Fr<)r�TsFDSA)r
r r�rr�r'rrrrprrorrrlrr��
trailing_datarfrg�RuntimeErrorr�s r=�test_pipeliningr�s����6��A��<�<�>�Y�&�&�&��N�N�	2���!�����&�(?�@�	
�
	
�(����!����
�=�=�D� � � ��;�;�-�'�'�'��<�<�>�V�#�#�#��F�F�8��R�0�1��F�F�<�>���=�=�D� � � ��;�;�$���������!�����&�(?�@�	
�
	
�(����!����
�<�<�>�V�#�#�#��F�F�8��R�0�1��F�F�<�>�������!���u�T�4E�3F�G���!����

�<�<�>�Y�&�&�&��F�F�8��R�0�1��F�F�<�>��
�<�<�>�Y�&�&�&��N�N�7���<�<�>�V�#�#�#��?�?�.�.�.�.��N�N�3���?�?�o�-�-�-��<�<�>�V�#�#�#��N�N�3���<�<�>�V�#�#�#�	���|�	$� �	���w�� � � �s�+L�Lc	�P	��tddddg��tddg��td	dg��ftd
dgd���td	dg��td
dg��ftddgd���tddg��td	dg��ftddgd���tddg��td
dg��ffD�]�\�}}dtf�fd�}|�}|j	t
|�|jD]'}|jttt
tik(r�'J�|j	t
t��|jD]}|j��|�}|j	t
|�|jD]�}|jttt
tik(sJ�|jd�|j�t usJ�|jd�|j�t usJ�|j"dk(r��J�|�}|j$t
}|jd�|j�t usJ�|j"dk(sJ�|j	|�|j�t usJ�|j	t��|j�t'|�td
dgd��t�gk(sJ�|�}|j$t
}|jd�|j�t usJ�|j"dk(sJ�|j	t
|�|j�t usJ�|�}|j$t
}|jd�|j�t usJ�|j	|�|j�t)�k(sJ�|�}t+j,t.�5|j$tj	td
ddg���ddd�|�}|j	t
|�t+j,t.�5|j$t
j	t1d���ddd����y#1swY�xxYw#1swY���xYw)N�CONNECTzexample.com:443�r-�foo�rC�1r.r�r�r8r7r+r,)r�r�)�Upgradeza, b�e)r�r�)r�r�r)c���t�}|jt��|jD]}|jtt
ur�J�|jtt
d��t�g�|jD]}|jttur�J�|jtj�tusJ�|S)Nrer_)
r&rlrrmrnrrrrrir r�r)rsrirMs  �r=r�z#test_protocol_switch.<locals>.setup~s����� �A�
�F�F�6�3�����
8���{�{�6�*�i�7�7�7�
8�
�F�F�6�D�d�O�\�^�<�=����
D���{�{�6�*�.C�C�C�C�
D��6�6�&�>�,�,�.�&�8�8�8��Hr<�123s456)s123456Fr�)r�Fr4r5r<)r<Tr�r_)rrrr&rlr rmrnrrrrr�r!r�r�rr�rir'rrfrgr"r)�deny�acceptr�rsri�scrMs      @r=�test_protocol_switchr�TsA���
� �(�(�*A�B�
�

��/Q�.R�S���/Q�.R�S�	
�
���W�
�

��/Q�.R�S�!�c�<L�;M�N�	
�
� �(�W�
�

��/Q�.R�S���/Q�.R�S�		
�
� �(�W�
�

��/Q�.R�S�!�c�<L�;M�N�		
�;' �y3���d�F�R	�~�	�
�G��	���v�t���G�G�	D�D��;�;�6�4���"C�C�C�C�	D�	���v�|�~�&��G�G�	$�D��!�!�#�	$�
�G��	���v�v���G�G�	<�D��;�;�6�+<�f�FW�"X�X�X�X����f�%��?�?�$��.�.�.����f�%��?�?�$��.�.�.��%�%�);�;�;�;�
	<�
�G��
�V�V�F�^��
���1�2��}�}��&�(�(�(����#E�E�E�E�
����
��}�}��&�(�(�(�
������
�����b�!��5��b�u�M��N�&
�
�	
�
�
�G��
�V�V�F�^��
������}�}��&�(�(�(����;�.�.�.�	���v�v���}�}��&�(�(�(��G��
�V�V�F�^��
������}�}��&�(�(�(�
����
��}�}��"2�"4�4�4�4�
�G��
�]�]�-�
.�	�
�F�F�6�N����u�S�=�/�J�
�	�
�G��	���v�v��
�]�]�-�
.�	3�
�F�F�6�N����&� 1�2�	3�	3�qy3�d	�	��	3�	3�s�(0R�-R�R	�R%	c�����ttfttffD�]�\��dtf��fd�}|�}|j�j	�t�k(sJ�|j�j	�t�k(sJ�|j�j
d�|j�j	�t�k(sJ�|�}|j�t��|jD]*}|jtusJ�|jtur�*J�|�}tjt�5|j�j
d�ddd�|�}|j�j
d�tjt�5|j�j	�ddd����y#1swY�qxYw#1swY���xYw)Nr)c���t�}|j�t��|jD]}|j�t
�tik(r�J�|S�N)r&rlrrmrnrr)rsri�who_shot_first�who_shot_seconds  ��r=r�z test_close_simple.<locals>.setup�s\���� �A�
�F�F�>�#3�#5�6����
���{�{�"�F�#�Z�'����
�
�Hr<r<r�rP)rr r&rir�rr�rlrmrorrprfrgr�r#)r�rsrir�r�s   @@r=�test_close_simpler��s����06�v�.>���@P�-Q�#0�)���	�~�	�
�G���v�v�o�&�1�1�3�7G�7I�I�I�I��v�v�o�&�1�1�3�7G�7I�I�I�I�	�����,�,�S�1��v�v�o�&�1�1�3�7G�7I�I�I�I��G��	���� 0� 2�3��G�G�	.�D��>�>�V�+�+�+��#�#�v�-�-�-�	.�
�G��
�]�]�<�
(�	9�
�F�F�?�#�0�0��8�	9�
�G��	���~��+�+�F�3�
�]�]�.�
/�	0�
�F�F�>�"�-�-�/�	0�	0�E#0�:	9�	9��
	0�	0�s�G�1G'�G$	�'G1	c	�>�tdddg��t�g}tddg��t�g}t�}|j	t
t
��|jD]'}|jt
tttik(r�'J�t�}|j	t
|�|j	t
t
��|jD]'}|jt
tttik(r�'J�t�}|j	t
|�tjt�5|j tj	t
��ddd�|j t
j#d�tjt$�5|j t
j'�ddd�t�}|j	t
|�|j	t|�|j	tt
��|jD]'}|jt
tttik(r�'J�t�}|j	t
|�|j	t|�|j	t
t
��|j	tt
��|j	t
t
��|j	tt
��t�}|j	t
tdd	dd
g���tjt�5|j t
j	t
��ddd�|j tj#d�tjt$�5|j tj'�ddd�y#1swY���xYw#1swY��/xYw#1swY��xYw#1swYyxYw)Nr+r�r�r.r7r�r8r<r,rZ)rrrr&rlrrrmrnrr rrrfrgr"rir�r#r�)rMrIrsris    r=�test_close_different_statesr��s���u�V�m�_�E����C�
	�S�+M�*N�O����D�	��A��F�F�6�#�%�&����C���{�{�v�v�v�z�B�B�B�B�C�	��A��F�F�6�3���F�F�6�#�%�&����F���{�{�v�v�v�}�E�E�E�E�F�	��A��F�F�6�3��	���)�	*�0�	���v����,�.�/�0��F�F�6�N����$�	���*�	+�$�	���v��!�!�#�$�	��A��F�F�6�3���F�F�6�4���F�F�6�#�%�&����C���{�{�v�z�6�6�B�B�B�B�C�	��A��F�F�6�3���F�F�6�4���F�F�6�#�%�&��F�F�6�#�%�&��F�F�6�#�%�&��F�F�6�#�%�&�	��A��F�F�����}�>V�.W�	
��
���)�	*�0�	���v����,�.�/�0��F�F�6�N����$�	���*�	+�$�	���v��!�!�#�$�$�E0�0��$�$��80�0��$�$�s0�=+O-�+"O:�+P�"P�-O7�:P�P�Pc��tt�}|jd�|jd�t|�t	ddddg��td�	�t
�gk(sJ�|jttusJ�|jtd
g���|jt
��|jttusJ�|j�t|�t	ddddg��td
�	�t
�t�gk(sJ�|jttttik(sJ�|jtd
g���|jt
��|jtttt ik(sJ�|jt��|jttttik(sJ�y)NspGET /1 HTTP/1.1
Host: a.com
Content-Length: 5

12345GET /2 HTTP/1.1
Host: a.com
Content-Length: 5

67890r<r+r�)r�r�)rRr�r.r^r_r7r8r�ra)r
r r�r'rrrrnrrrlrr�rrrrr�s r=�test_pipelined_closer�<s����6��A��N�N�	���N�N�3���!�����&�(?�@�	
�
	
�(����!����
�8�8�F��t�#�#�#��F�F�8��R�0�1��F�F�<�>���8�8�F��t�#�#�#������!�����&�(?�@�	
�
	
�(������	!�	�	�	�
�8�8����
�>�>�>�>��F�F�8��R�0�1��F�F�<�>���8�8����
�;�;�;�;��F�F�����8�8�����7�7�7�7r<c
����Gd�d�}|��dtttfdtdttttt
ff�fd�}|dd�\}}|�gk(sJ�|j
t��|d	d�\}}�|vsJ�d
||j��<dj|�dk(sJ�|dd
�\}}|�gk(sJ�|jtusJ�y)Nc��eZdZdefd�Zy)�*test_sendfile.<locals>.SendfilePlaceholderr)c��y)N�
r;)�selfs r=�__len__z2test_sendfile.<locals>.SendfilePlaceholder.__len__hs��r<N)�__name__�
__module__�__qualname__rSr�r;r<r=�SendfilePlaceholderr�gs��	�S�	r<r��headerr6r)c���tt�}t|dj|�j	d��g}|r|j|�|j
td|���||jt����fS)NzGET / HTTP/{}
Host: a

�asciir7r8r_)
r
r r(�format�encoderFrlr�send_with_data_passthroughr)r�r6r�r1�placeholders    �r=r�ztest_sendfile.<locals>.setupmsw���
�v����
�1�8�8��F�M�M�g�V�	
�����N�N�6�"�	���x�C��9�:��!�.�.�t��/E�F�F�Fr<rZz1.1rDs
xxxxxxxxxxr<sa
xxxxxxxxxx
r4)rrGr
rr�bytesrlr�index�joinror)r�r�r�r`�_r�s     @r=�
test_sendfiler�fs�����&�'�K�G��c�3�h��G�/2�G�	�z�8�D��K�0�0�	1�G��,�e�4�G�A�t��K�=� � � ��F�F�<�>���4�e�<�G�A�t��$����$-�D����K�	 �!��8�8�D�>�3�3�3�3��D�%� �G�A�t��K�=� � � ��;�;�)�#�#�#r<c���ttfD]�}t|��}|jd�t	j
t�5|j�ddd�|jtusJ�|jtusJ�t|jj�t	j
t�5|j�ddd�|tus��|jtdg���dk(r��J�dt t"dtfd�}ttfD�]�}|tur t%d	d
dg��}t%d	d
dgd
��}n#|turtdg��}tdgd
��}||�}|j�|jtusJ�||�}t	j
t&�5|j�ddd�|jtusJ�|jtusJ�t	j
t&�5|j|�ddd�||�}|j)�|jtusJ�|jtusJ�|j)�|jtusJ�|jtur���J�y#1swY��`xYw#1swY���xYw#1swY��xYw#1swY��xYw)Nr}s
gibberish

i�r8s$HTTP/1.1 400 
Connection: close

�roler)c�n�t|��}|tur t|d�|jtusJ�|S)Nr}r�)r
r r(ror�r�r�s  r=riztest_errors.<locals>.conn�s5����%���6�>��A�8�9��;�;�-�/�/�/��r<r+r,rKr.r4r5r7r:)rr r
r�rfrgr#r�rprro�print�_cstaternrlrr	r$rr"�send_failed)r�r�ri�good�bads     r=�test_errorsr��s����� �����%��	���+�,�
�]�]�.�
/�	�
�L�L�N�	��}�}��%�%�%��{�{�%�'�'�'�
�a�i�i����
�]�]�.�
/�	�
�L�L�N�	��6�>����x�C��<�=�@�A�
�A��*�4��>��j���� �$*���6�>��%��>U�=V�W�D����0�1�"�	�C��V�^���R�8�D��s�B�U�K�C���J��	���t���{�{�%�'�'�'���J��
�]�]�-�
.�	�
�F�F�3�K�	��{�{�e�#�#�#��}�}�E�)�)�)�
�]�]�-�
.�	�
�F�F�4�L�	�
��J��	�
�
���{�{�e�#�#�#��}�}�E�)�)�)�	�
�
���{�{�e�#�#�#��}�}�E�)�)�)�I$*�5	�	��	�	��P	�	��
	�	�s0�J5�?K�K�K�5J?	�K	�K	�K$	c�l�ttfD]%}t|�}|j�tur�%J�yr�)rr r
r�rr�s  r=�test_idle_receive_nothingr��s4���� �+���t����|�|�~��*�*�*�+r<c��tt�}|jd�|j�tusJ�|jd�tjt�5|j�ddd�y#1swYyxYw)NsGET /r<)r
r r�r�rrfrgr#r�s r=�test_connection_dropr��sc���6��A��N�N�8���<�<�>�Y�&�&�&��N�N�3��	���*�	+��	�������s�#A=�=Bc�\�t�}|jttddg���y)Ni�)s
connectionscloser8)r&rlr r)rss r=�test_408_request_timeoutr��s%��	��A��F�F�6�8��6O�5P�Q�Rr<c��tt�}|jd�tjt
�5|j
�ddd�y#1swYyxYw)Nr��r
r r�rfrgr#r�r�s r=�test_empty_requestr��sC���6��A��N�N�7��	���*�	+��	���������A�Ac��tt�}|jtdddg���|j	d�tjt�5|j�ddd�y#1swYyxYw)Nr+r,r�r.r�)	r
rrlrr�rfrgr#r�r�s r=�test_empty_responser��sZ���6��A��F�F�7�%��m�_�E�F��N�N�7��	���*�	+��	�������s�A2�2A;r`)�� s�c��tt�}|j|�tjt
�5|j
�ddd�y#1swYyxYwr�r��r`r�s  r=�'test_early_detection_of_invalid_requestr��E��	�6��A��N�N�4��	���*�	+��	�������r�)rrs1c��tt�}|j|�tjt
�5|j
�ddd�y#1swYyxYwr�)r
rr�rfrgr#r�rs  r=�(test_early_detection_of_invalid_responserrr�c�>�dtdtdtfd�}dD]�}||d�}|jtdg���d	k(sJ�||d
�}|jtdg���dk(sJ�||d�}|jtddd
g���d	k(r��J�y)Nr/r6r)c���tt�}|j|dz|zdzdz�t|j	��t
usJ�t|j	��tusJ�|S)Ns / HTTP/r�sHost: example.com

)r
r r��typer�rr)r/r6r�s   r=r�z(test_HEAD_framing_headers.<locals>.setupsi���v���	����[� �<�/�'�9�<X�X�	
��A�L�L�N�#�w�.�.�.��A�L�L�N�#�|�3�3�3��r<)rPrOr\r7r8s-HTTP/1.1 200 
Transfer-Encoding: chunked

s1.0r�r�rD)r�r
rlr)r�r/r�s   r=�test_HEAD_framing_headersrs����e��5��Z��$�
���&�&�!��
�F�F�8��R�8�9�>2�
2�	
�
2�

�&�&�!��
�F�F�8��R�8�9�>)�
)�	
�
)�

�&�&�!��
�F�F�� #�1�8���
�2�

2�	
�

2�%
r<c��tt�}|jd�t|j	��t
usJ�|j	�tusJ�|jd�|j	�td��k(sJ�|jd�tjt�5}|j	�ddd�dtj�vsJ�dt|j�vsJ�tt�}|jd�t|j	��t
usJ�|j	�tusJ�|jd�|j	�jd	k(sJ�|jd�tjt�5}|j	�ddd�d
t|j�vsJ�y#1swY��"xYw#1swY�0xYw)Ns;POST / HTTP/1.1
Host: example.com
Content-Length: 100

r^r_r<zreceived 5 byteszexpected 100r~s	8
012345s012345zincomplete chunked read)r
r r�r
r�rrrrfrgr#rG�valuer`)r��excinfos  r=�;test_special_exceptions_for_lost_connection_in_message_bodyrFs����6��A��N�N�V��������7�*�*�*��<�<�>�Y�&�&�&��N�N�8���<�<�>�T�x�0�0�0�0��N�N�3��	���*�	+��w�	�������W�]�]�!3�3�3�3��S����/�/�/�/��6��A��N�N�	.��
������7�*�*�*��<�<�>�Y�&�&�&��N�N�>�"��<�<�>���)�+�+�+��N�N�3��	���*�	+��w�	�����$��G�M�M�(:�:�:�:�%��� ��s�4G%�2G2�%G/�2G;)r)N)J�typingrrrrrrr	rf�_connectionrrr
rr�_eventsrrrrrrr�_staterrrrrrrrrr r!�_utilr"r#r$�helpersr&r'r(r>rXrtr{r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��mark�parametrizer�rrrrr;r<r=�<module>rsV��?�?�?�
�S�S��������F�E�D�D�V�<)=�X@;�F;�>$/�N
#� ";�J'7�TG�@*:�ZI�X�BE �Pz3�z&0�R=$�D'8�T!$�HC*�L+��S��������
����%��D���������
����5��T����'
�T;r<

Youez - 2016 - github.com/yon3zu
LinuXploit