zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
U
M±d@ã
@sìddlmZmZmZmZddlZddlmZmZm    Z    m
Z
m Z m Z m Z ddlmZmZddlmZmZmZmZmZddlmZddlmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#dd    l$m%Z%dd
l&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-d d l.m/Z/eefe d dddgddfe"e!fe ddgdddfe"e!fe dgdddfe"e!fe ddgdddfe"e!fe dgdddfgZ0edee1dœdd „Z2eeedd!œd"d#„Z3e1ed$œd%d&„Z4ee1edd'œd(d)„Z5dd*œd+d,„Z6dd*œd-d.„Z7dd*œd/d0„Z8dd*œd1d2„Z9dd*œd3d4„Z:ee1e;eeddfd5œd6d7„Z<eee
d8œd9d:„Z=dWee1ee;dd<œd=d>„Z>dd*œd?d@„Z?dd*œdAdB„Z@dd*œdCdD„ZAdd*œdEdF„ZBdd*œdGdH„ZCdd*œdIdJ„ZDdd*œdKdL„ZEdd*œdMdN„ZFdd*œdOdP„ZGdd*œdQdR„ZHdd*œdSdT„ZIdd*œdUdV„ZJdS)Xé)ÚAnyÚCallableÚ    GeneratorÚListNé)ÚConnectionClosedÚDataÚ EndOfMessageÚEventÚInformationalResponseÚRequestÚResponse)ÚHeadersÚnormalize_and_validate)Ú_obsolete_line_foldÚ ChunkedReaderÚContentLengthReaderÚ Http10ReaderÚREADERS©Ú ReceiveBuffer)
ÚCLIENTÚCLOSEDÚDONEÚIDLEÚMIGHT_SWITCH_PROTOCOLÚ
MUST_CLOSEÚ    SEND_BODYÚ SEND_RESPONSEÚSERVERÚSWITCHED_PROTOCOL)ÚLocalProtocolError)Ú ChunkedWriterÚContentLengthWriterÚ Http10WriterÚwrite_any_responseÚ write_headersÚ write_requestÚWRITERSé)Únormalize_data_eventsÚGETz/a©ÚHostÚfoo©Ú
ConnectionÚclose©ÚmethodÚtargetÚheaderss1GET /a HTTP/1.1
Host: foo
Connection: close
 
éÈóOK)Ú status_coder5Úreasons&HTTP/1.1 200 OK
Connection: close
 
sHTTP/1.1 200 OK
 
ée)ZUpgradeZ    websocketsUpgrades,HTTP/1.1 101 Upgrade
Upgrade: websocket
 
sHTTP/1.1 101 Upgrade
 
).N)ÚwriterÚobjÚreturncCsg}|||jƒd |¡S)Nó)ÚappendÚjoin)r;r<Zgot_list©rAúHd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\h11/tests/test_io.pyÚdowriteRs rC)r;r<Úexpectedr=cCst||ƒ}||kst‚dS©N)rCÚAssertionError)r;r<rDÚgotrArArBÚtwXs
rH)Údatar=cCstƒ}||7}|SrEr)rIÚbufrArArBÚmakebuf]srK)ÚreaderrIrDr=cs¨tddœ‡fdd„ }t|ƒ}|||ƒƒ|r0t‚tƒ}tt|ƒƒD](}||ƒdksVt‚||||d…7}qB|||ƒƒt|ƒ}|d7}|||ƒƒt|ƒdks¤t‚dS)N)rGr=csF|ˆks t‚t|dgƒD](\}}t|ƒtks0t‚t|ƒtkst‚qdS)Nr5)rFÚgetattrÚtypeÚbytes)rGÚnameÚvalue©rDrArBÚcheckds ztr.<locals>.checkr)ótrailing)rrKrFrÚrangeÚlenrO)rLrIrDrSrJÚirArRrBÚtrcs       rX)r=cCs,tD]"\\}}}}tt||f||ƒqdSrE)Ú SIMPLE_CASESrHr(©ÚroleÚstateÚeventÚbinaryrArArBÚtest_writers_simplesr_cCs,tD]"\\}}}}tt||f||ƒqdSrE)rYrXrrZrArArBÚtest_readers_simple„sr`c    Csˆtttddgƒdƒtttgƒdƒt t¡"tttddddgd    d
dƒW5QRXt t¡tt    t
d dgd    d dƒW5QRXdS) N©r.Úbar)ZbazZquuxsfoo: bar
baz: quux
 
s
r+ú/r,r/ú1.0©r3r4r5Ú http_versionr6)r8r5rf) rHr&rrÚpytestÚraisesr!r'r r%r rArArArBÚtest_writers_unusual‰s6
ý üø
ÿûric
CsRttttfdtdddgddƒttttfdtddgddƒttttfdtd    dgdd
d ƒttttfd td    d gdd
d ƒttttfdtd    dgdd
d ƒttttfdtd    dgdd
d ƒttttfdtd    dgddd ƒttttfdtd    dgddd ƒttttfdtd    ddgddd ƒttttfdtd    ddgddd ƒttttfdtdddddd gd!ƒt     t
¡ttttfd"dƒW5QRXt     t
¡ttttfd#dƒW5QRXt     t
¡ttttfd$dƒW5QRXt     t
¡ttttfd$dƒW5QRXt     t
¡ttttfd%dƒW5QRXdS)&Ns$HEAD /foo HTTP/1.0
Some: header
 
ÚHEADú/foo©ÚSomeÚheaderrdresHEAD /foo HTTP/1.0
 
s!HTTP/1.0 200 OK
Some: header
 
r6r7)r8r5rfr9s$HTTP/1.0 200 OK
Foo: a a a a a 
 
)ÚFooz    a a a a asHTTP/1.0 200 OK
Foo:
 
)roÚsHTTP/1.0 200 OK
Foo:           
 
sHTTP/1.0 200
Foo: bar
 
)rorbr>s#HTTP/1.1 200 OK
SomeHeader: val
 
)Z
SomeHeaderÚvalz1.1ÚOKs5HTTP/1.1 200 OK
SomeHeader1: val1
SomeHeader2: val2
 
)Z SomeHeader1Zval1)Z SomeHeader2Zval2s7HTTP/1.1 200 OK
SomeHeader1: val1
SomeHeader2: val2
 
sŸHEAD /foo HTTP/1.1
Host: example.com
Some: multi-line
 header
    nonsense
                   I guess
Connection: close
More-nonsense: in the
    last header  
 
©r-z example.com)rmz"multi-line header nonsense I guessr/)z More-nonsensezin the last headerr2s&HEAD /foo HTTP/1.1
  folded: line
 
s#HEAD /foo HTTP/1.1
foo  : line
 
s"HEAD /foo HTTP/1.1
foo    : line
 
sHEAD /foo HTTP/1.1
: line
 
) rXrrrr rrr rgrhr!rArArArBÚtest_readers_unusual¨s 
üý 
ý
üý 
üý 
ÿý
ÿý    
ÿý
 
üý 
üý 
üý 
    üýõ 
ý 
ý 
ý 
ý rtcCs*ttddddgƒƒdtdƒdgks&t‚dS)Nóaaasbbbs  cccsdddsbbb ccc)ÚlistrÚ    bytearrayrFrArArArBÚtest__obsolete_line_fold_bytesHs
ýrx)rLrJÚdo_eofr=ccsB||ƒ}|dkrq(|Vt|ƒtkrq(q|r>|r4t‚| ¡VdSrE)rNr    rFZread_eof)rLrJryr]rArArBÚ_run_reader_iterUs rz)Úargsr=cGstt|Žƒ}t|ƒSrE)rvrzr*)r{ÚeventsrArArBÚ _run_readerfs r}F)ÚthunkrIrDryr=c    CsÔtdƒt|ƒ}t|ƒ||ƒ|ks&t‚tdƒ|ƒ}tƒ}g}tt|ƒƒD](}|t||dƒ7}||||d…7}qJ|t|||ƒ7}t|ƒ|ks”t‚tdd„|Dƒƒ}|rÐ|sÐt|dƒ}t|ƒ|dƒ|ksÐt‚dS)NzTest 1zTest 2Fr)css|]}t|ƒtkVqdSrE)rNr    )Ú.0r]rArArBÚ    <genexpr>|sz t_body_reader.<locals>.<genexpr>rT)    ÚprintrKr}rFrrUrVr*Úany)    r~rIrDryrJrLr|rWZ is_completerArArBÚ t_body_readerks  rƒcCs4tdd„dtƒgƒtdd„dtddtƒgƒdS)NcSstdƒS)Nr©rrArArArBÚ<lambda>ƒr>z*test_ContentLengthReader.<locals>.<lambda>r>cSstdƒS)Né
r„rArArArBr…†r>s
0123456789©rI)rƒr    rrArArArBÚtest_ContentLengthReader‚s ýrˆcCsLttdtƒgddttdtddgddttdtddtƒgdddS)Nr>T)rysasdfr‡F)rƒrr    rrArArArBÚtest_Http10ReaderŒsÿr‰c    Csôttdtƒgƒttdtdgdgƒttdtddtdgdgƒttdtddtƒgƒttd    td
dtƒgƒt t¡ttd td dgƒW5QRXt t¡ttd dƒW5QRXttdtddtƒgƒttdtddtƒgƒdS)Nó0
 
s0
Some: header
 
rl©r5s35
01234
10
0123456789abcdef
0
Some: header
 
s012340123456789abcdefr‡s%5
01234
10
0123456789abcdef
0
 
sµaA
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
0
 
sªxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsi9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
xxxsxxxs10
xxxsG5; hello=there
xxxxx
0; random="junk"; some=more; canbe=lonnnnngg
 
sxxxxxs5        
01234
0
 
s01234)rƒrr    rrgrhr!rArArArBÚtest_ChunkedReader”sJ ý
þú ýý  ú    ýrŒc    CsNtdƒ}t|tddƒdks t‚t|tddƒdks8t‚t|tƒƒdksLt‚tdƒ}t t¡t|tddƒW5QRXtdƒ}t|tddƒt t¡t|tddƒW5QRXtdƒ}t|tddƒt t¡t|tƒƒW5QRXtdƒ}t|tddƒdkt|tddƒdkt t¡t|tdgd    ƒW5QRXdS)
Nés123r‡s45r>s123456s456©ZEtagZasdfr‹)r#rCrrFr    rgrhr!©ÚwrArArBÚtest_ContentLengthWriterÑs(    r‘cCs‚tƒ}t|tddƒdkst‚t|tddƒdks6t‚t|tddƒdksNt‚t|tƒƒdksbt‚t|tdd    gd
ƒd ks~t‚dS) Nrur‡s3
aaa
saaaaaaaaaaaaaaaaaaaas14
aaaaaaaaaaaaaaaaaaaa
r>rŠrŽ)ÚaÚbr‹s0
Etag: asdf
a: b
 
)r"rCrrFr    rrArArBÚtest_ChunkedWriterìsÿÿr”c    Cs^tƒ}t|tddƒdkst‚t|tƒƒdks2t‚t t¡t|tdgdƒW5QRXdS)Ns1234r‡r>rŽr‹)r$rCrrFr    rgrhr!rrArArBÚtest_Http10Writerûs
 r•c    Cs.t t¡ttttfddƒW5QRXdS)NsHTTP/1.0 200 OKxxxx
 
)rgrhr!rXrrrrArArArBÚ&test_reject_garbage_after_request_lines r–c    Cs.t t¡ttttfddƒW5QRXdS)Ns&HEAD /foo HTTP/1.1 xxxxxx
Host: a
 
©rgrhr!rXrrrrArArArBÚ'test_reject_garbage_after_response_line    s  
ýr˜c    Cs.t t¡ttttfddƒW5QRXdS)Ns%HEAD /foo HTTP/1.1
Host: foobar
 
r—rArArArBÚ"test_reject_garbage_in_header_lines  
ýr™c
CsTdD]J}tdƒ}| |¡| d¡t t¡tttt    f|dƒW5QRXqdS)Ns îsHEAD /s HTTP/1.1
Host: foobar
 
)
rwr?Úextendrgrhr!rXrrr)Zbad_charÚmessagerArArBÚtest_reject_non_vchar_in_paths 
 
 rœcCs&ttttfdtddddgdƒdS)Ns\HEAD /foo HTTP/1.1
Host: foo
Set-Cookie: ___utmvafIumyLc=kUdUpAt; path=/; Max-Age=900
 
rjrkr,)z
Set-Cookiez-___utmvafIumyLc=kUdUpAt; path=/; Max-Age=900r2)rXrrrr rArArArBÚ"test_allow_some_garbage_in_cookies%s
þýúrcCstttddgƒdƒdS)NrarssHost: example.com
foo: bar
 
)rHr&rrArArArBÚtest_host_comes_first7s
 
ýrž)F)KÚtypingrrrrrgZ_eventsrrr    r
r r r Ú_headersrrÚ_readersrrrrrZ_receivebufferrÚ_staterrrrrrrrrr Z_utilr!Ú_writersr"r#r$r%r&r'r(Zhelpersr*rYrOrCrHrKrXr_r`rirtrxÚboolrzr}rƒrˆr‰rŒr‘r”r•r–r˜r™rœrržrArArArBÚ<module>s†$     0 $     ýù
ý ýÿû ýå#! þ 
=