Format: application/x-python-code
⬇ Download File (32.3 KB)
   1  o
   2  
   3  .'h@��@sddlmZmZmZmZmZmZmZddlZddl	m
   4  Z
   5  mZmZm
   6  Z
   7  mZddlmZmZmZmZmZmZmZddlmZmZmZmZmZmZmZmZm Z m!Z!m"Z"ddl#m$Z$m%Z%m&Z&dd	l'm(Z(m)Z)m*Z*dFdd�Z+dFd
   8  d�Z,dFdd�Z-dFdd�Z.dFdd�Z/dFdd�Z0dFdd�Z1dFdd�Z2dFdd�Z3dFdd�Z4dFdd �Z5dFd!d"�Z6dFd#d$�Z7dFd%d&�Z8dFd'd(�Z9dFd)d*�Z:dFd+d,�Z;dFd-d.�Z<dFd/d0�Z=dFd1d2�Z>dFd3d4�Z?dFd5d6�Z@dFd7d8�ZAdFd9d:�ZBejC�Dd;gd<��d;eEd
   9  dfd=d>��ZFejC�Dd;gd?��d;eEd
  10  dfd@dA��ZGdFdBdC�ZHdFdDdE�ZIdS)G�)�Any�cast�Dict�List�Optional�Tuple�TypeN�)�
  11  _body_framing�_keep_alive�
  12  Connection�	NEED_DATA�PAUSED)�ConnectionClosed�Data�EndOfMessage�Event�InformationalResponse�Request�Response)�CLIENT�CLOSED�DONE�ERROR�IDLE�MIGHT_SWITCH_PROTOCOL�
  13  MUST_CLOSE�	SEND_BODY�
  14  SEND_RESPONSE�SERVER�SWITCHED_PROTOCOL)�LocalProtocolError�RemoteProtocolError�Sentinel�)�ConnectionPair�get_all_events�receive_and_get�returncCs�ttdddgd��sJ�ttddddgd��rJ�ttddddgd��r&J�ttddgdd��r2J�ttd	gd
  15  ��s<J�ttd	dgd
  16  ��rGJ�ttd	dgd
  17  ��rRJ�ttd	gdd��r]J�dS)N�GET�/)�HostzExample.com��method�target�headers�r�close)rza, b, cLOse, foo�1.0�r-r.r/�http_version����status_coder/�r7r/r4)rrr�r9r9�OC:\Users\shubh\Videos\agent\nova\Lib\site-packages\h11/tests/test_connection.py�test__keep_alive s4�������r;c	s�dttdtdttttffdd��	ddtdttdtdtf�fd	d
  18  �
  19  }ddttdtdtf�fdd�
  20  }idd
  21  iddid
  22  dd�fD]7}tt	tt
  23  f|�}d|di|��fd|dddi|��fd|dddi|��ffD]
  24  \}}t||�dksyJ�qlqCddid
  25  dd�fD]+}tt	tt
  26  f|�}d|di|��fd|di|��ffD]
  27  \}}t||�dks�J�q�q�d|d
  28  d�fd|d
  29  d�ffD]
  30  \}}t||�dks�J�q�td|��dks�J�td|��dks�J�dS)N�cl�ter(cSs0g}|dur|�dt|�f�|r|�d�|S)N�Content-Length�zTransfer-Encoding�chunked)�append�str)r<r=r/r9r9r:r/?s
  31  z#test__body_framing.<locals>.headersr5Fr7cst|�||�d�S)Nr6)r)r7r<r=�r/r9r:�respGsz test__body_framing.<locals>.respcs"�||�}|dg7}tdd|d�S)N�r+zexample.comr)r*r,)r)r<r=�hrCr9r:�reqLs
  32  
  33  ztest__body_framing.<locals>.req�dT)r<r=�HEAD�GET��i0)�content-length)r)r@r9)r<)rL)rH)zhttp/1.0r9)r5NF)NFr9)r�int�boolrrrBrrrrrr
  34  )rDrG�kwargs�meth�rr9rCr:�test__body_framing>s:&	����� ��,�$rRcCst�t��td�Wd�n1swYt�}|jtjtus&J�|jtjt	us0J�|jt	jt	us:J�|jt	jtusDJ�|�
  35  ttddddgd��}|dksWJ�|jD]
  36  }|j
  37  ttt	tiksgJ�qZ|jtjtusrJ�|jtjtus|J�|jt	jtus�J�|jt	jtus�J�|jtjdus�J�|jt	jdks�J�|�
  38  t	td	gd
  39  ��}|dks�J�|�
  40  t	tdd
  41  gd
  42  ��}|dks�J�|jD]
  43  }|j
  44  ttt	tiks�J�q�|jtjdks�J�|jt	jdks�J�|�
  45  ttdd��}|dks�J�|j
  46  ttdd�tdd�t�gd�}|dk�sJ�|j
  47  tt�gd�}|dk�s!J�|jD]}|j
  48  ttt	tik�s2J��q$|�
  49  t	tdd��}|dk�sDJ�|j
  50  t	tdd�tdd�t�gd�}|dk�s\J�|j
  51  t	t�gd�}|dk�slJ�|jD]}|j
  52  ttt	tik�s}J��qodS)Nrr)r*rE�r>�10r,s9GET / HTTP/1.1
  53  Host: example.com
  54  Content-Length: 10
  55  
  56  �1.1rHr6sHTTP/1.1 100 
  57  
  58  r5)r>Z11s%HTTP/1.1 200 
  59  Content-Length: 11
  60  
  61  �12345��data�67890��expect��
  62  1234567890�1)�pytest�raises�
  63  ValueErrorrr%�connr�our_roleZ
  64  their_roler�sendr�conns�statesrr�	our_state�their_stateZtheir_http_versionrrrrr��prXrbr9r9r:�)test_Connection_basics_and_content_lengthjsl
  65  ����
  66  
  67  �
  68  "
  69  �rkcCst�}|�ttddddgd��|�ttdddd��}|d	ks!J�|�ttd
  70  ddd��}|dks2J�|jttdd
  71  �gd�}|dksCJ�|�ttdgd��}|dksSJ�|�ttddgd��|�ttdddd��|�ttdddd��|�tt��|jD]
  72  }|j	tt
  73  tt
  74  iks�J�q~dS)Nr)r*rEr?r,r]T�rXZchunk_startZ	chunk_endsa
  75  1234567890
  76  sabcdes
  77  5
  78  abcde
  79  r\rWrZ)ZhelloZthererCs0
  80  hello: there
  81  
  82  r5r6s54321rV)r%rdrrrrrrrerfrrir9r9r:�test_chunked�s4���
  83  �rmcCs4ttd�}d}|�|�|��tddddgd�ksJ�|��tus#J�|�d�|��td	d
  84  d
  85  d�ks5J�|�d�|��td
  86  d
  87  dd�ksGJ�|�d�|��tdddd�ksYJ�|�d�|��tddd
  88  d�kskJ�|�d�|��td	d
  89  d
  90  d�ks}J�|�d�|��tks�J�|�d�|��t�ks�J�dS)N�rc�BPOST / HTTP/1.1
  91  Host: example.com
  92  Transfer-Encoding: chunked
  93  
  94  �POSTr*rEr?r,s
  95  5
  96  hello
  97  shelloTrls5
  98  helshelF�lso
  99  �os5
 100  hello�
 101  s0
 102  
 103  )rr�receive_data�
 104  next_eventrr
 105  rr)rb�requestr9r9r:�test_chunk_boundaries�s0
 106  �
 107  �
 108  
 109  
 110  
 111  
 112  
 113  
 114  rwcCs�tt�}|�tdddgd��|�t��|jtusJ�t|d�tdgddd	�gks,J�|jt	us3J�t|d
 115  �t
 116  d
 117  d�gks@J�t|d�t
 118  dd�gksMJ�t|d
 119  �t�t�gksZJ�|jt
 120  usaJ�dS)Nr)r*rEr,sHTTP/1.0 200 OK
 121  
 122  r5r2sOK)r7r/r4�reasonrVrWrYr\)rrrdrrrgrr'rrrrrhr��cr9r9r:�$test_client_talking_to_http10_server�s
 123  �r{cCstt�}t|d�tddgdd�t�gksJ�|jtusJ�|�tdgd��dks*J�|�t	d	d
 124  ��d	ks6J�|�t��dks@J�|j
 125  tusGJ�tt�}t|d�td
 126  ddgdd�t	dd
 127  �gks`J�t|d�t	dd
 128  �t�gksoJ�|jtusvJ�t|d�t�gks�J�dS)N�GET / HTTP/1.0
 129  
 130  r)r*r2r3r5r6�$HTTP/1.1 200 
 131  Connection: close
 132  
 133  rVrWr\s(POST / HTTP/1.0
 134  Content-Length: 10
 135  
 136  1rprSr^s	234567890)rrr'rrrhrrdrrrgrryr9r9r:�$test_server_talking_to_http10_clients2
 137  ���
 138  �	r~c	Cs�dggddgfD]R}tttttf|�}t�}|�ttdddgd�t�g�|jt	t
 139  d|d�t
 140  ddgd�d	�tt	�}t|d
 141  �|�t
 142  d|d��dksNJ�|�t
 143  dd
 144  ��dksZJ�qdS)Nr?�r>�100r)r*rEr,r5r6rZr|r}rVrW)rrrrBr%rdrrrrrrr'r)Zuser_headersrjrzr9r9r:�,test_automatic_transfer_encoding_in_response(s4���	
 145  ��
 146  
 147  ��r�cCs�t�}|�ttddddgd�t�g�|jD]}|jttus!J�q|jtt	dgd�t�gt	ddgd�t�gd	�|jD]
 148  }|jttttiksIJ�q<dS)
 149  Nr)r*rEr0r,rKr6)�
 150  connectionr1rZ)
 151  r%rdrrrrerfrrr�rjrbr9r9r:�(test_automagic_connection_close_handlingRs.���
 152  ��
 153  
 154  �r�cCs�dtfdd�}|�}|�ttdgd��|jD]}|jrJ�|jr#J�q|�}|�ttddgd��|jD]}|jr<J�|jrAJ�q5|�}|�tt	dd	��|jD]}|jrXJ�|jr]J�qQdS)
 155  Nr(cSsZt�}|�ttddgd�d��|jD]}|jsJ�q|jtjr#J�|jtjs+J�|S)Nr)r*)rEr)ZExpectz100-continuer,)	r%rdrrre�"client_is_waiting_for_100_continuerb�!they_are_waiting_for_100_continuerr�r9r9r:�setupss��
 156  z test_100_continue.<locals>.setuprHr6r5r?rVrW)
 157  r%rdrrrer�r�rrr�r�rjrbr9r9r:�test_100_continuers&
 158  
 159  �
 160  
 161  
 162  
 163  �r�cCs6tt�}|�d�|��tusJ�t�t��	|�d�|��q1s%wYttdd�}|�d�|�d�|�d�t|�t	d	d
 164  ddgd
 165  �t
 166  �gksQJ�ttdd�}|�d�|�d�t�t��|��Wd�n1suwYttdd�}|�d�|�ddd�t|�t	d	d
 167  ddgd
 168  �tddd�t
 169  �gks�J�ttdd�}|�d�t|�t	d	ddgd�t
 170  �gks�J�|�d�|�t
 171  dgd��|�t
 172  ��|��t|�t	d	ddgd�t
 173  �gks�J�|�t
 174  dgd��|�t
 175  ��|��t�t��
 176  |��Wd�dS1�swYdS)NsGET / HTTP/1.0
 177  Endless: Tsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai�)Zmax_incomplete_event_sizesGET / HTTP/1.0
 178  Big: s�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas
 179  
 180  r)r*r2)�bigA�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)r-r.r4r/i�s%GET / HTTP/1.0
 181  Content-Length: 10000�ai')r>Z10000rWrHs GET /1 HTTP/1.1
 182  Host: a
 183  
 184  GET /2 HTTP/1.1
 185  Host: b
 186  
 187  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX�/1)�host�ar,s�XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXr5r6�/2)r��b)rrrtrur
 188  r_r`r"r&rrrrdr�start_next_cycleryr9r9r:�-test_max_incomplete_event_size_countermeasure�sx
 189  
 190  ��
 191  
 192  
 193  
 194  �
 195  �
 196  
 197  
 198  �
 199  �
 200  ��
 201  �
 202  
 203  �
 204  $�r�cCs�t�}|�ttdddgd�t�g�|�ttddgd�t�g�|jD]}|jtt	tt	iks0J�|�
 205  �q#|�ttdd	dgd�t�g�|�ttd
 206  dgd�t�g�dS)Nr)r*�r+r�r,r5�stransfer-encodingschunkedr6�DELETE�/foo�)r%rdrrrrrrerfrr�r�r9r9r:�test_reuse_simple�s4���
 207  
 208  ����r�cCs$tt�}|��tusJ�|�d�t|�tddddgd�tdd�t�gks'J�|j	t
 209  us.J�|jtus5J�|��t
 210  us=J�|�td	gd
 211  ��|�t��|j	t
 212  usSJ�|jt
 213  usZJ�|��t|�tddddgd�tdd�t�gkstJ�|��t
 214  us|J�|�td	gd
 215  ��|�t��|��t|�tdd
 216  dgd�t�gks�J�|��tus�J�|�td	gd
 217  ��|�t��|��tus�J�|�d�|��t
 218  us�J�|jdks�J�|�d�|jdks�J�|��t
 219  us�J�|�d�|��t
 220  us�J�t�t��|�d�Wd�dS1�swYdS)Ns�GET /1 HTTP/1.1
 221  Host: a.com
 222  Content-Length: 5
 223  
 224  12345GET /2 HTTP/1.1
 225  Host: a.com
 226  Content-Length: 5
 227  
 228  67890GET /3 HTTP/1.1
 229  Host: a.com
 230  
 231  r)r�)r+�a.com)r>�5r,rVrWr5r6r�rYz/3�SADF)r�Fr\)r�TsFDSA)rrrur
 232  rtr&rrrrhrrgrrrdrr��
 233  trailing_datar_r`�RuntimeErrorryr9r9r:�test_pipeliningsl��
 234  �	�
 235  �	
 236  �
 237  
 238  
 239  $�r�c	sltddddgd�tddgd�td	dgd�ftd
 240  dgd�d�td	dgd�td
 241  dgd�ftddgd�d�tddgd�td	dgd�ftddgd�d�tddgd�td
 242  dgd�ffD�]\\�}}dtf�fdd�}|�}|�t|�|jD]
 243  }|jtt	tt
 244  iks~J�qq|�tt��|jD]}|��q�|�}|�t|�|jD].}|jtt
 245  tt
 246  iks�J�|�d�|��tus�J�|�d�|��tus�J�|jdks�J�q�|�}|jt}|�d�|��tus�J�|jdks�J�|�|�|��tus�J�|�t��|��t|�td
 247  dgdd�t�gk�sJ�|�}|jt}|�d�|��tu�s&J�|jdk�s.J�|�t|�|��tu�s=J�|�}|jt}|�d�|��tu�sSJ�|�|�|��t�k�sbJ�|�}t�t��|jt�td
 248  ddgd��Wd�n	1�s�wY|�}|�t|�t�t��|jt�tdd��Wd�n	1�s�wYqVdS)NZCONNECTzexample.com:443�r+Zfoo�r>�1r,r�r�r6r5r)r*)r�r�)�Upgradeza, b�e)r�r�)r�r�r(cs�t�}|�t��|jD]}|jttusJ�q|�ttdd�t�g�|jD]}|jttus2J�q'|j	t
 249  ��tus>J�|S)Nr^rW)
 250  r%rdrrerfrrrrrbrrurr��rGr9r:r�~s
 251  
 252  z#test_protocol_switch.<locals>.setup�123s456)s123456Fr|)r|Fr2r3r\)r\Tr�rW)rrrr%rdrrerfrrrrr�r rtrurr�rbr&rr_r`r!r)Zdeny�acceptr�rjrb�scr9r�r:�test_protocol_switchTs���
 253  ��
 254  �����)
 255  
 256  
 257  
 258  
 259  
 260  
 261  
 262  
 263  �
 264  
 265  
 266  
 267  
 268  
 269  �����r�c	sZttfttffD]�\��dtf��fdd�}|�}|j���t�ks%J�|j���t�ks1J�|j��d�|j���t�ksEJ�|�}|��t��|jD]}|j	t
 270  us[J�|jt
 271  usbJ�qR|�}t�
 272  t��|j��d�Wd�n1s~wY|�}|j��d�t�
 273  t��|j���Wd�n1s�wYqdS)Nr(cs:t�}|��t��|jD]
 274  }|j�t�tiksJ�q
 275  |S�N)r%rdrrerfrrr��Zwho_shot_firstZwho_shot_secondr9r:r��s
 276  �z test_close_simple.<locals>.setupr\r�rJ)rrr%rbrurrtrdrergrrhr_r`r�r"r�r9r�r:�test_close_simple�s.
 277  ����r�cCs�tdddgd�t�g}tddgd�t�g}t�}|�tt��|jD]
 278  }|jtt	t
 279  tiks/J�q"t�}|�t|�|�tt��|jD]
 280  }|jtt	t
 281  tiksPJ�qCt�}|�t|�t
 282  �t��|jt
 283  �t��Wd�n1sswY|jt�d�t
 284  �t��|jt��Wd�n1s�wYt�}|�t|�|�t
 285  |�|�t
 286  t��|jD]
 287  }|jttt
 288  t	iks�J�q�t�}|�t|�|�t
 289  |�|�tt��|�t
 290  t��|�tt��|�t
 291  t��t�}|�ttdd	dd
 292  gd��t
 293  �t��|jt�t��Wd�n	1�swY|jt
 294  �d�t
 295  �t��|jt
 296  ��Wd�dS1�s>wYdS)Nr)r�r�r,r5r�r6r\r*rS)rrrr%rdrrrerfrrrrr_r`r!rbrtr"ru)rGrDrjrbr9r9r:�test_close_different_states�sf��
 297  
 298  ��
 299  
 300  ���$�r�cCs2tt�}|�d�|�d�t|�tddddgd�tdd	�t�gks$J�|jtt	us-J�|�
 301  td
 302  gd��|�
 303  t��|jtt	usEJ�|��t|�tddddgd�td
 304  d	�t�t
 305  �gksaJ�|jttttikslJ�|�
 306  td
 307  gd��|�
 308  t��|jttttiks�J�|�
 309  t
 310  ��|jttttiks�J�dS)NspGET /1 HTTP/1.1
 311  Host: a.com
 312  Content-Length: 5
 313  
 314  12345GET /2 HTTP/1.1
 315  Host: a.com
 316  Content-Length: 5
 317  
 318  67890r\r)r�)r�r�)rLr�r,rVrWr5r6r�rY)rrrtr&rrrrfrrrdrr�rrrrryr9r9r:�test_pipelined_close<sF�
 319  �
 320  �	�
 321  �
 322  r�c
 323  s�Gdd�d�}|��dtttfdtdtttttff�fdd�}|dd	�\}}|�gks1J�|�t��|d
 324  d	�\}}�|vsDJ�d||���<d�	|�d
 325  ksTJ�|dd�\}}|�gksbJ�|j
 326  tusiJ�dS)Nc@seZdZdefdd�ZdS)z*test_sendfile.<locals>.SendfilePlaceholderr(cSsdS)N�
 327  r9)�selfr9r9r:�__len__hsz2test_sendfile.<locals>.SendfilePlaceholder.__len__N)�__name__�
 328  __module__�__qualname__rMr�r9r9r9r:�SendfilePlaceholdergsr��headerr4r(csVtt�}t|d�|��d��g}|r|�|�|�td|d��||�t	�d��fS)NzGET / HTTP/{}
 329  Host: a
 330  
 331  �asciir5r6rW)
 332  rrr'�format�encoderArdrZsend_with_data_passthroughr)r�r4rzr/��placeholderr9r:r�ms�
 333  ztest_sendfile.<locals>.setuprSz1.1r?s
 334  xxxxxxxxxxr\sa
 335  xxxxxxxxxx
 336  r2)rrBrrr�bytesrdr�index�joinrgr)r�r�rzrX�_r9r�r:�
 337  test_sendfilefs&
 338  ���
 339  r�c	CsJttfD]c}t|d�}|�d�t�t��|��Wd�n1s$wY|jt	us0J�|j
 340  t	us7J�t|jj
 341  �t�t��|��Wd�n1sQwY|turg|�tdgd��dksgJ�qdttdtfdd	�}ttfD]�}|tur�td
 342  ddgd
 343  �}td
 344  ddgdd�}n|tur�tdgd�}tdgdd�}||�}|�|�|j
 345  t	us�J�||�}t�t��
 346  |�|�Wd�n1s�wY|j
 347  t	us�J�|jt	us�J�t�t��
 348  |�|�Wd�n1s�wY||�}|��|j
 349  t	u�sJ�|jt	u�sJ�|��|j
 350  t	u�sJ�|jt	u�s"J�qwdS)Nrns
 351  gibberish
 352  
 353  i�r6s$HTTP/1.1 400 
 354  Connection: close
 355  
 356  �roler(cSs.t|d�}|turt|d�|jtusJ�|S)Nrnr|)rrr'rgr�r�rzr9r9r:rb�s
 357  
 358  
 359  ztest_errors.<locals>.connr)r*rEr,r2r3r5r8)rrrrtr_r`r"rurhrrg�printZ_cstaterfrdrrr#rr!Zsend_failed)r�rzrbZgood�badr9r9r:�test_errors�sd
 360  
 361  
 362  �
 363  ����
 364  ���r�cCs*ttfD]}t|�}|��tusJ�qdSr�)rrrrur
 365  r�r9r9r:�test_idle_receive_nothing�s�r�cCsdtt�}|�d�|��tusJ�|�d�t�t��
 366  |��Wd�dS1s+wYdS)NsGET /r\)rrrtrur
 367  r_r`r"ryr9r9r:�test_connection_drop�s
 368  
 369  
 370  "�r�cCs t�}|�ttddgd��dS)Ni�)s
 371  connectionscloser6)r%rdrr)rjr9r9r:�test_408_request_timeout�sr�cCsJtt�}|�d�t�t��
 372  |��Wd�dS1swYdS)Nrs�rrrtr_r`r"ruryr9r9r:�test_empty_request�s
 373  
 374  
 375  "�r�cCs`tt�}|�tdddgd��|�d�t�t��
 376  |��Wd�dS1s)wYdS)Nr)r*r�r,rs)	rrrdrrtr_r`r"ruryr9r9r:�test_empty_response�s
 377  
 378  "�r�rX)�� s�cC�Jtt�}|�|�t�t��
 379  |��Wd�dS1swYdSr�r��rXrzr9r9r:�'test_early_detection_of_invalid_request��
 380  	
 381  
 382  "�r�)r�r�s1cCr�r�)rrrtr_r`r"rur�r9r9r:�(test_early_detection_of_invalid_responser�r�cCs�dtdtdtfdd�}dD]:}||d�}|�tdgd	��d
 383  ks!J�||d�}|�tdgd	��dks3J�||d�}|�tdd
 384  dgd	��d
 385  ksGJ�q
 386  dS)Nr-r4r(cSsNtt�}|�|d|dd�t|���tusJ�t|���tus%J�|S)Ns / HTTP/rssHost: example.com
 387  
 388  )rrrt�typerurr)r-r4rzr9r9r:r�s�z(test_HEAD_framing_headers.<locals>.setup)rJrIrUr5r6s-HTTP/1.1 200 
 389  Transfer-Encoding: chunked
 390  
 391  s1.0r}rr?)r�rrdr)r�r-rzr9r9r:�test_HEAD_framing_headerss$	
 392  
 393  
 394  ���	
 395  ��r�cCsZtt�}|�d�t|���tusJ�|��tusJ�|�d�|��tdd�ks+J�|�d�t�	t
 396  ��}|��Wd�n1sDwYdt|j�vsRJ�dt|j�vs[J�tt�}|�d�t|���tusnJ�|��tusvJ�|�d�|��j
 397  d	ks�J�|�d�t�	t
 398  ��}|��Wd�n1s�wYd
 399  t|j�vs�J�dS)Ns;POST / HTTP/1.1
 400  Host: example.com
 401  Content-Length: 100
 402  
 403  rVrWr\zreceived 5 byteszexpected 100ros	8
 404  012345s012345zincomplete chunked read)rrrtr�rurr
 405  rr_r`r"rB�valuerX)rz�excinfor9r9r:�;test_special_exceptions_for_lost_connection_in_message_bodyFs6�
 406  
 407  
 408  ��
 409  
 410  
 411  �r�)r(N)J�typingrrrrrrrr_�_connectionr
 412  rrr
 413  rZ_eventsrrrrrrr�_staterrrrrrrrrrr Z_utilr!r"r#�helpersr%r&r'r;rRrkrmrwr{r~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��markZparametrizer�r�r�r�r�r9r9r9r:�<module>sV$$4	
 414  
 415  
 416  
 417  ,
 418  C
 419  
 420  '
 421  
 422  %
 423  *
 424   
 425  -
 426  L
 427  !
 428  H
 429  }
 430  )
 431  B
 432  *
 433  $
 434  F
 435  
 436  	
 437  
 438  ��
 439  *