Artifact
9218f6577647a42cae4abb3c99055397d713a120619f4c5e3d5fce09cd54a66c:
Ticket change
[9218f65776]
- New ticket
[94c6a431fee47acd|94c6a431fe] <i>Buffering until timeout</i>.
by
anonymous on
2018-04-01 14:06:53.
0000: 44 20 32 30 31 38 2d 30 34 2d 30 31 54 31 34 3a D 2018-04-01T14:
0010: 30 36 3a 35 33 2e 33 35 33 0a 4a 20 66 6f 75 6e 06:53.353.J foun
0020: 64 69 6e 20 31 2e 37 2e 31 36 0a 4a 20 69 63 6f din 1.7.16.J ico
0030: 6d 6d 65 6e 74 20 54 68 69 73 5c 73 62 75 67 5c mment This\sbug\
0040: 73 6d 69 67 68 74 5c 73 6e 6f 74 5c 73 62 65 5c smight\snot\sbe\
0050: 73 69 6e 5c 73 54 63 6c 74 6c 73 3a 5c 73 69 74 sin\sTcltls:\sit
0060: 5c 73 6d 69 67 68 74 5c 73 62 65 5c 73 69 6e 5c \smight\sbe\sin\
0070: 73 54 63 6c 5c 73 73 74 61 63 6b 65 64 5c 73 63 sTcl\sstacked\sc
0080: 68 61 6e 6e 65 6c 73 2c 5c 73 74 68 65 5c 73 54 hannels,\sthe\sT
0090: 63 6c 5c 72 5c 6e 5b 72 65 61 64 5d 5c 73 63 6f cl\r\n[read]\sco
00a0: 6d 6d 61 6e 64 2c 5c 73 66 69 6c 65 65 76 65 6e mmand,\sfileeven
00b0: 74 5c 73 67 65 6e 65 72 61 74 69 6f 6e 5c 73 6f t\sgeneration\so
00c0: 72 5c 73 62 75 66 66 65 72 69 6e 67 2e 5c 72 5c r\sbuffering.\r\
00d0: 6e 5c 72 5c 6e 54 68 65 5c 73 62 75 67 5c 73 6f n\r\nThe\sbug\so
00e0: 63 63 75 72 73 5c 73 77 68 65 6e 5c 73 75 73 69 ccurs\swhen\susi
00f0: 6e 67 5c 73 54 63 6c 74 6c 73 5c 73 31 2e 37 2e ng\sTcltls\s1.7.
0100: 31 36 5c 73 77 69 74 68 5c 73 74 68 65 5c 73 73 16\swith\sthe\ss
0110: 74 6f 63 6b 5c 73 54 63 6c 5c 73 38 2e 36 2e 38 tock\sTcl\s8.6.8
0120: 5c 73 61 6e 64 5c 72 5c 6e 4c 69 62 72 65 53 53 \sand\r\nLibreSS
0130: 4c 5c 73 32 2e 36 2e 34 2c 5c 73 62 75 74 5c 73 L\s2.6.4,\sbut\s
0140: 68 61 73 5c 73 65 78 69 73 74 65 64 5c 73 66 6f has\sexisted\sfo
0150: 72 5c 73 61 5c 73 6c 6f 6e 67 5c 73 74 69 6d 65 r\sa\slong\stime
0160: 3a 5c 73 69 74 5c 73 61 6c 73 6f 5c 73 6f 63 63 :\sit\salso\socc
0170: 75 72 73 5c 73 69 6e 5c 73 6f 6c 64 65 72 5c 72 urs\sin\solder\r
0180: 5c 6e 76 65 72 73 69 6f 6e 73 5c 73 61 74 5c 73 \nversions\sat\s
0190: 6c 65 61 73 74 5c 73 61 73 5c 73 66 61 72 5c 73 least\sas\sfar\s
01a0: 62 61 63 6b 5c 73 61 73 5c 73 54 63 6c 74 6c 73 back\sas\sTcltls
01b0: 5c 73 31 2e 36 2e 37 2c 5c 73 54 63 6c 5c 73 38 \s1.6.7,\sTcl\s8
01c0: 2e 35 2e 31 33 5c 73 61 6e 64 5c 73 4f 70 65 6e .5.13\sand\sOpen
01d0: 53 53 4c 5c 73 31 2e 30 32 64 2e 5c 72 5c 6e 5c SSL\s1.02d.\r\n\
01e0: 72 5c 6e 57 68 65 6e 5c 73 61 5c 73 63 68 61 6e r\nWhen\sa\schan
01f0: 6e 65 6c 5c 73 69 73 5c 73 6f 70 65 6e 65 64 5c nel\sis\sopened\
0200: 73 77 69 74 68 5c 73 74 6c 73 3a 3a 73 6f 63 6b swith\stls::sock
0210: 65 74 2c 5c 73 61 5c 73 6e 6f 6e 2d 62 6c 6f 63 et,\sa\snon-bloc
0220: 6b 69 6e 67 5c 73 5b 72 65 61 64 5d 5c 73 64 6f king\s[read]\sdo
0230: 65 73 5c 73 6e 6f 74 5c 72 5c 6e 61 6c 77 61 79 es\snot\r\nalway
0240: 73 5c 73 72 65 74 75 72 6e 5c 73 74 68 65 5c 73 s\sreturn\sthe\s
0250: 61 76 61 69 6c 61 62 6c 65 5c 73 64 61 74 61 2c available\sdata,
0260: 5c 73 73 6f 6d 65 74 69 6d 65 73 5c 73 28 69 66 \ssometimes\s(if
0270: 5c 73 2d 62 6c 6f 63 6b 73 69 7a 65 5c 73 69 73 \s-blocksize\sis
0280: 5c 73 34 30 39 36 29 5c 73 65 76 65 6e 5c 73 69 \s4096)\seven\si
0290: 66 5c 73 69 74 5c 72 5c 6e 65 78 63 65 65 64 73 f\sit\r\nexceeds
02a0: 5c 73 74 68 65 5c 73 73 69 7a 65 5c 73 72 65 71 \sthe\ssize\sreq
02b0: 75 65 73 74 65 64 3b 5c 73 69 6e 73 74 65 61 64 uested;\sinstead
02c0: 5c 73 69 74 5c 73 77 61 69 74 73 5c 73 75 6e 74 \sit\swaits\sunt
02d0: 69 6c 5c 73 74 68 65 5c 73 72 65 6d 6f 74 65 5c il\sthe\sremote\
02e0: 73 73 65 72 76 65 72 5c 73 63 6c 6f 73 65 73 5c sserver\scloses\
02f0: 72 5c 6e 74 68 65 5c 73 63 6f 6e 6e 65 63 74 69 r\nthe\sconnecti
0300: 6f 6e 2e 5c 72 5c 6e 5c 72 5c 6e 57 68 65 6e 5c on.\r\n\r\nWhen\
0310: 73 75 73 69 6e 67 5c 73 68 74 74 70 3a 3a 67 65 susing\shttp::ge
0320: 74 75 72 6c 5c 73 77 69 74 68 5c 73 74 6c 73 3a turl\swith\stls:
0330: 3a 73 6f 63 6b 65 74 2c 5c 73 61 5c 73 48 54 54 :socket,\sa\sHTT
0340: 50 53 5c 73 72 65 71 75 65 73 74 5c 73 66 6f 72 PS\srequest\sfor
0350: 5c 73 61 6e 5c 73 65 6e 74 69 74 79 5c 73 74 68 \san\sentity\sth
0360: 61 74 5c 72 5c 6e 69 73 5c 73 6c 61 72 67 65 72 at\r\nis\slarger
0370: 5c 73 74 68 61 6e 5c 73 74 68 65 5c 73 2d 62 6c \sthan\sthe\s-bl
0380: 6f 63 6b 73 69 7a 65 5c 73 68 61 6e 67 73 5c 73 ocksize\shangs\s
0390: 69 66 5c 73 74 68 65 5c 73 73 65 72 76 65 72 5c if\sthe\sserver\
03a0: 73 72 65 73 70 6f 6e 73 65 5c 73 75 73 65 73 5c sresponse\suses\
03b0: 73 61 5c 73 70 65 72 73 69 73 74 65 6e 74 5c 72 sa\spersistent\r
03c0: 5c 6e 63 6f 6e 6e 65 63 74 69 6f 6e 5c 73 61 6e \nconnection\san
03d0: 64 5c 73 64 6f 65 73 5c 73 6e 6f 74 5c 73 75 73 d\sdoes\snot\sus
03e0: 65 5c 73 63 68 75 6e 6b 65 64 5c 73 65 6e 63 6f e\schunked\senco
03f0: 64 69 6e 67 5c 73 28 62 75 74 5c 73 64 6f 65 73 ding\s(but\sdoes
0400: 5c 73 73 75 70 70 6c 79 5c 73 61 6e 5c 73 61 63 \ssupply\san\sac
0410: 63 75 72 61 74 65 5c 72 5c 6e 43 6f 6e 74 65 6e curate\r\nConten
0420: 74 2d 4c 65 6e 67 74 68 5c 73 68 65 61 64 65 72 t-Length\sheader
0430: 29 2e 5c 73 5c 73 54 68 65 5c 73 63 6c 69 65 6e ).\s\sThe\sclien
0440: 74 5c 73 68 61 73 5c 73 73 6f 6d 65 5c 73 73 75 t\shas\ssome\ssu
0450: 63 63 65 73 73 66 75 6c 5c 73 5b 72 65 61 64 73 ccessful\s[reads
0460: 5d 2c 5c 73 62 75 74 5c 73 74 68 65 6e 5c 72 5c ],\sbut\sthen\r\
0470: 6e 64 6f 65 73 5c 73 6e 6f 74 68 69 6e 67 5c 73 ndoes\snothing\s
0480: 75 6e 74 69 6c 5c 73 74 68 65 5c 73 73 65 72 76 until\sthe\sserv
0490: 65 72 5c 73 74 69 6d 65 73 5c 73 6f 75 74 2c 5c er\stimes\sout,\
04a0: 73 61 6c 74 68 6f 75 67 68 5c 73 74 68 65 5c 73 salthough\sthe\s
04b0: 66 75 6c 6c 5c 73 72 65 73 70 6f 6e 73 65 5c 73 full\sresponse\s
04c0: 68 61 73 5c 73 62 65 65 6e 5c 72 5c 6e 72 65 63 has\sbeen\r\nrec
04d0: 65 69 76 65 64 5c 73 61 6e 64 5c 73 69 73 5c 73 eived\sand\sis\s
04e0: 62 75 66 66 65 72 65 64 5c 73 73 6f 6d 65 77 68 buffered\ssomewh
04f0: 65 72 65 2e 5c 72 5c 6e 5c 72 5c 6e 54 68 65 5c ere.\r\n\r\nThe\
0500: 73 72 65 6c 65 76 61 6e 74 5c 73 70 61 72 74 5c srelevant\spart\
0510: 73 6f 66 5c 73 68 74 74 70 5c 73 69 73 5c 73 69 sof\shttp\sis\si
0520: 6e 5c 73 74 68 65 5c 73 63 6f 6d 6d 61 6e 64 5c n\sthe\scommand\
0530: 73 68 74 74 70 3a 3a 45 76 65 6e 74 2c 5c 73 66 shttp::Event,\sf
0540: 6f 72 5c 73 75 6e 63 68 75 6e 6b 65 64 5c 73 64 or\sunchunked\sd
0550: 61 74 61 5c 72 5c 6e 77 69 74 68 5c 73 6b 6e 6f ata\r\nwith\skno
0560: 77 6e 5c 73 73 69 7a 65 5c 73 24 73 74 61 74 65 wn\ssize\s$state
0570: 28 74 6f 74 61 6c 73 69 7a 65 29 5c 73 6f 62 74 (totalsize)\sobt
0580: 61 69 6e 65 64 5c 73 66 72 6f 6d 5c 73 61 5c 73 ained\sfrom\sa\s
0590: 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 5c 73 Content-Length\s
05a0: 68 65 61 64 65 72 2e 5c 73 5c 73 54 68 65 5c 72 header.\s\sThe\r
05b0: 5c 6e 72 65 6c 65 76 61 6e 74 5c 73 70 61 72 74 \nrelevant\spart
05c0: 5c 73 6f 66 5c 73 74 68 65 5c 73 63 6f 64 65 5c \sof\sthe\scode\
05d0: 73 63 61 6e 5c 73 62 65 5c 73 61 62 73 74 72 61 scan\sbe\sabstra
05e0: 63 74 65 64 5c 73 61 73 3a 5c 72 5c 6e 5c 72 5c cted\sas:\r\n\r\
05f0: 6e 66 63 6f 6e 66 69 67 75 72 65 5c 73 24 73 6f nfconfigure\s$so
0600: 63 6b 5c 73 2d 62 6c 6f 63 6b 69 6e 67 5c 73 6f ck\s-blocking\so
0610: 66 66 5c 73 2d 74 72 61 6e 73 6c 61 74 69 6f 6e ff\s-translation
0620: 5c 73 62 69 6e 61 72 79 5c 73 2d 62 75 66 66 65 \sbinary\s-buffe
0630: 72 73 69 7a 65 5c 73 24 73 74 61 74 65 28 2d 62 rsize\s$state(-b
0640: 6c 6f 63 6b 73 69 7a 65 29 5c 72 5c 6e 66 69 6c locksize)\r\nfil
0650: 65 65 76 65 6e 74 5c 73 24 73 6f 63 6b 5c 73 72 eevent\s$sock\sr
0660: 65 61 64 61 62 6c 65 5c 73 5b 6c 69 73 74 5c 73 eadable\s[list\s
0670: 68 74 74 70 3a 3a 45 76 65 6e 74 5c 73 24 73 6f http::Event\s$so
0680: 63 6b 5c 73 24 74 6f 6b 65 6e 5d 5c 72 5c 6e 5c ck\s$token]\r\n\
0690: 72 5c 6e 70 72 6f 63 5c 73 68 74 74 70 3a 3a 45 r\nproc\shttp::E
06a0: 76 65 6e 74 5c 73 7b 73 6f 63 6b 5c 73 74 6f 6b vent\s{sock\stok
06b0: 65 6e 7d 5c 73 7b 5c 72 5c 6e 5c 73 5c 73 5c 73 en}\s{\r\n\s\s\s
06c0: 5c 73 76 61 72 69 61 62 6c 65 5c 73 24 74 6f 6b \svariable\s$tok
06d0: 65 6e 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 75 70 en\r\n\s\s\s\sup
06e0: 76 61 72 5c 73 30 5c 73 24 74 6f 6b 65 6e 5c 73 var\s0\s$token\s
06f0: 73 74 61 74 65 5c 72 5c 6e 5c 72 5c 6e 5c 73 5c state\r\n\r\n\s\
0700: 73 5c 73 5c 73 23 5c 73 31 2e 5c 73 48 6f 77 5c s\s\s#\s1.\sHow\
0710: 73 6d 61 6e 79 5c 73 62 79 74 65 73 5c 73 74 6f smany\sbytes\sto
0720: 5c 73 61 73 6b 5c 73 66 6f 72 2e 5c 72 5c 6e 5c \sask\sfor.\r\n\
0730: 73 5c 73 5c 73 5c 73 73 65 74 5c 73 72 65 71 53 s\s\s\sset\sreqS
0740: 69 7a 65 5c 73 24 73 74 61 74 65 28 2d 62 6c 6f ize\s$state(-blo
0750: 63 6b 73 69 7a 65 29 5c 72 5c 6e 5c 72 5c 6e 5c cksize)\r\n\r\n\
0760: 73 5c 73 5c 73 5c 73 23 5c 73 32 2e 5c 73 52 65 s\s\s\s#\s2.\sRe
0770: 61 64 2e 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 73 ad.\r\n\s\s\s\ss
0780: 65 74 5c 73 62 6c 6f 63 6b 5c 73 5b 72 65 61 64 et\sblock\s[read
0790: 5c 73 24 73 6f 63 6b 5c 73 24 72 65 71 53 69 7a \s$sock\s$reqSiz
07a0: 65 5d 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 73 65 e]\r\n\s\s\s\sse
07b0: 74 5c 73 6e 5c 73 5b 73 74 72 69 6e 67 5c 73 6c t\sn\s[string\sl
07c0: 65 6e 67 74 68 5c 73 24 62 6c 6f 63 6b 5d 5c 72 ength\s$block]\r
07d0: 5c 6e 5c 73 5c 73 5c 73 5c 73 69 66 5c 73 7b 24 \n\s\s\s\sif\s{$
07e0: 6e 5c 73 3e 3d 5c 73 30 7d 5c 73 7b 5c 72 5c 6e n\s>=\s0}\s{\r\n
07f0: 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 \s\s\s\s\s\s\s\s
0800: 61 70 70 65 6e 64 5c 73 73 74 61 74 65 28 62 6f append\sstate(bo
0810: 64 79 29 5c 73 24 62 6c 6f 63 6b 5c 72 5c 6e 5c dy)\s$block\r\n\
0820: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 69 s\s\s\s\s\s\s\si
0830: 6e 63 72 5c 73 73 74 61 74 65 28 63 75 72 72 65 ncr\sstate(curre
0840: 6e 74 73 69 7a 65 29 5c 73 24 6e 5c 72 5c 6e 5c ntsize)\s$n\r\n\
0850: 73 5c 73 5c 73 5c 73 7d 5c 72 5c 6e 5c 72 5c 6e s\s\s\s}\r\n\r\n
0860: 5c 73 5c 73 5c 73 5c 73 23 5c 73 33 2e 5c 73 43 \s\s\s\s#\s3.\sC
0870: 68 65 63 6b 5c 73 66 6f 72 5c 73 65 6e 64 5c 73 heck\sfor\send\s
0880: 6f 66 5c 73 64 61 74 61 2e 5c 72 5c 6e 5c 73 5c of\sdata.\r\n\s\
0890: 73 5c 73 5c 73 69 66 5c 73 7b 24 73 74 61 74 65 s\s\sif\s{$state
08a0: 28 63 75 72 72 65 6e 74 73 69 7a 65 29 5c 73 3e (currentsize)\s>
08b0: 3d 5c 73 24 73 74 61 74 65 28 74 6f 74 61 6c 73 =\s$state(totals
08c0: 69 7a 65 29 7d 5c 73 7b 5c 72 5c 6e 5c 73 5c 73 ize)}\s{\r\n\s\s
08d0: 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 45 6f 66 5c \s\s\s\s\s\sEof\
08e0: 73 24 74 6f 6b 65 6e 5c 72 5c 6e 5c 73 5c 73 5c s$token\r\n\s\s\
08f0: 73 5c 73 7d 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 s\s}\r\n\s\s\s\s
0900: 72 65 74 75 72 6e 5c 72 5c 6e 7d 5c 72 5c 6e 5c return\r\n}\r\n\
0910: 72 5c 6e 54 68 65 5c 73 62 75 67 5c 73 63 61 6e r\nThe\sbug\scan
0920: 5c 73 62 65 5c 73 77 6f 72 6b 65 64 5c 73 61 72 \sbe\sworked\sar
0930: 6f 75 6e 64 5c 73 62 79 5c 73 70 72 65 63 69 73 ound\sby\sprecis
0940: 65 6c 79 5c 73 73 70 65 63 69 66 79 69 6e 67 5c ely\sspecifying\
0950: 73 74 68 65 5c 73 73 69 7a 65 5c 73 6f 66 5c 73 sthe\ssize\sof\s
0960: 74 68 65 5c 72 5c 6e 75 6e 74 72 61 6e 73 66 65 the\r\nuntransfe
0970: 72 72 65 64 5c 73 72 65 73 70 6f 6e 73 65 5c 73 rred\sresponse\s
0980: 62 6f 64 79 2e 5c 72 5c 6e 5c 72 5c 6e 5c 73 5c body.\r\n\r\n\s\
0990: 73 5c 73 5c 73 23 5c 73 31 2e 5c 73 48 6f 77 5c s\s\s#\s1.\sHow\
09a0: 73 6d 61 6e 79 5c 73 62 79 74 65 73 5c 73 74 6f smany\sbytes\sto
09b0: 5c 73 61 73 6b 5c 73 66 6f 72 2e 5c 72 5c 6e 5c \sask\sfor.\r\n\
09c0: 73 5c 73 5c 73 5c 73 73 65 74 5c 73 72 65 71 53 s\s\s\sset\sreqS
09d0: 69 7a 65 5c 73 5b 65 78 70 72 5c 73 7b 24 73 74 ize\s[expr\s{$st
09e0: 61 74 65 28 74 6f 74 61 6c 73 69 7a 65 29 5c 73 ate(totalsize)\s
09f0: 2d 5c 73 24 73 74 61 74 65 28 63 75 72 72 65 6e -\s$state(curren
0a00: 74 73 69 7a 65 29 7d 5d 5c 72 5c 6e 5c 72 5c 6e tsize)}]\r\n\r\n
0a10: 54 68 69 73 5c 73 77 6f 72 6b 61 72 6f 75 6e 64 This\sworkaround
0a20: 5c 73 66 61 69 6c 73 5c 73 69 66 5c 73 72 65 71 \sfails\sif\sreq
0a30: 53 69 7a 65 5c 73 69 73 5c 73 63 61 70 70 65 64 Size\sis\scapped
0a40: 5c 73 61 74 5c 73 24 73 74 61 74 65 28 2d 62 6c \sat\s$state(-bl
0a50: 6f 63 6b 73 69 7a 65 29 3a 5c 72 5c 6e 5c 72 5c ocksize):\r\n\r\
0a60: 6e 5c 73 5c 73 5c 73 5c 73 23 5c 73 31 2e 5c 73 n\s\s\s\s#\s1.\s
0a70: 48 6f 77 5c 73 6d 61 6e 79 5c 73 62 79 74 65 73 How\smany\sbytes
0a80: 5c 73 74 6f 5c 73 61 73 6b 5c 73 66 6f 72 2e 5c \sto\sask\sfor.\
0a90: 72 5c 6e 5c 73 5c 73 5c 73 5c 73 73 65 74 5c 73 r\n\s\s\s\sset\s
0aa0: 72 65 71 53 69 7a 65 5c 73 5b 65 78 70 72 5c 73 reqSize\s[expr\s
0ab0: 7b 6d 69 6e 28 24 72 65 71 53 69 7a 65 2c 5c 73 {min($reqSize,\s
0ac0: 24 73 74 61 74 65 28 2d 62 6c 6f 63 6b 73 69 7a $state(-blocksiz
0ad0: 65 29 29 7d 5d 5c 72 5c 6e 5c 72 5c 6e 57 68 65 e))}]\r\n\r\nWhe
0ae0: 6e 5c 73 74 68 65 5c 73 68 61 6e 67 69 6e 67 5c n\sthe\shanging\
0af0: 73 6f 63 63 75 72 73 2c 5c 73 6d 6f 72 65 5c 73 soccurs,\smore\s
0b00: 74 68 61 6e 5c 73 24 73 74 61 74 65 28 2d 62 6c than\s$state(-bl
0b10: 6f 63 6b 73 69 7a 65 29 5c 73 62 79 74 65 73 5c ocksize)\sbytes\
0b20: 73 63 61 6e 5c 73 62 65 5c 73 61 76 61 69 6c 61 scan\sbe\savaila
0b30: 62 6c 65 2c 5c 72 5c 6e 28 69 66 5c 73 2d 62 6c ble,\r\n(if\s-bl
0b40: 6f 63 6b 73 69 7a 65 5c 73 69 73 5c 73 34 30 39 ocksize\sis\s409
0b50: 36 29 5c 73 62 75 74 5c 73 74 68 65 79 5c 73 61 6)\sbut\sthey\sa
0b60: 72 65 5c 73 6e 6f 74 5c 73 72 65 74 75 72 6e 65 re\snot\sreturne
0b70: 64 5c 73 62 79 5c 73 5b 72 65 61 64 5d 5c 73 75 d\sby\s[read]\su
0b80: 6e 74 69 6c 5c 73 74 69 6d 65 6f 75 74 2e 5c 72 ntil\stimeout.\r
0b90: 5c 6e 5c 72 5c 6e 54 68 65 5c 73 70 72 6f 70 65 \n\r\nThe\sprope
0ba0: 72 74 69 65 73 5c 73 72 65 61 64 5c 73 62 79 5c rties\sread\sby\
0bb0: 73 5b 66 63 6f 6e 66 69 67 75 72 65 5c 73 24 73 s[fconfigure\s$s
0bc0: 6f 63 6b 5d 5c 73 28 77 68 65 6e 5c 73 61 64 64 ock]\s(when\sadd
0bd0: 65 64 5c 73 74 6f 5c 73 68 74 74 70 3a 3a 45 76 ed\sto\shttp::Ev
0be0: 65 6e 74 29 5c 73 61 72 65 3a 5c 72 5c 6e 5c 73 ent)\sare:\r\n\s
0bf0: 5c 73 2d 62 6c 6f 63 6b 69 6e 67 5c 73 30 5c 72 \s-blocking\s0\r
0c00: 5c 6e 5c 73 5c 73 2d 62 75 66 66 65 72 69 6e 67 \n\s\s-buffering
0c10: 5c 73 66 75 6c 6c 5c 72 5c 6e 5c 73 5c 73 2d 62 \sfull\r\n\s\s-b
0c20: 75 66 66 65 72 73 69 7a 65 5c 73 38 31 39 32 5c uffersize\s8192\
0c30: 72 5c 6e 5c 73 5c 73 2d 65 6e 63 6f 64 69 6e 67 r\n\s\s-encoding
0c40: 5c 73 62 69 6e 61 72 79 5c 72 5c 6e 5c 73 5c 73 \sbinary\r\n\s\s
0c50: 2d 65 6f 66 63 68 61 72 5c 73 7b 7b 7d 5c 73 7b -eofchar\s{{}\s{
0c60: 7d 7d 5c 72 5c 6e 5c 73 5c 73 2d 74 72 61 6e 73 }}\r\n\s\s-trans
0c70: 6c 61 74 69 6f 6e 5c 73 7b 6c 66 5c 73 63 72 6c lation\s{lf\scrl
0c80: 66 7d 5c 72 5c 6e 54 68 65 5c 73 6c 61 73 74 5c f}\r\nThe\slast\
0c90: 73 74 68 72 65 65 5c 73 70 72 6f 70 65 72 74 69 sthree\sproperti
0ca0: 65 73 5c 73 63 6f 72 72 65 73 70 6f 6e 64 5c 73 es\scorrespond\s
0cb0: 28 66 6f 72 5c 73 72 65 61 64 69 6e 67 29 5c 73 (for\sreading)\s
0cc0: 74 6f 5c 73 74 68 65 5c 73 72 65 73 75 6c 74 73 to\sthe\sresults
0cd0: 5c 73 6f 66 5c 73 74 68 65 5c 73 63 6f 6d 6d 61 \sof\sthe\scomma
0ce0: 6e 64 5c 72 5c 6e 5c 73 5c 73 66 63 6f 6e 66 69 nd\r\n\s\sfconfi
0cf0: 67 75 72 65 5c 73 24 73 6f 63 6b 5c 73 2d 74 72 gure\s$sock\s-tr
0d00: 61 6e 73 6c 61 74 69 6f 6e 5c 73 62 69 6e 61 72 anslation\sbinar
0d10: 79 5c 72 5c 6e 5c 72 5c 6e 72 65 61 64 28 6e 29 y\r\n\r\nread(n)
0d20: 5c 73 64 65 73 63 72 69 62 65 73 5c 73 6e 6f 6e \sdescribes\snon
0d30: 2d 62 6c 6f 63 6b 69 6e 67 5c 73 6d 6f 64 65 5c -blocking\smode\
0d40: 73 77 69 74 68 5c 73 74 77 6f 5c 73 61 72 67 75 swith\stwo\sargu
0d50: 6d 65 6e 74 73 3a 5c 72 5c 6e 5c 72 5c 6e 5c 73 ments:\r\n\r\n\s
0d60: 5c 73 5c 73 5c 73 5c 73 5c 73 72 65 61 64 5c 73 \s\s\s\s\sread\s
0d70: 63 68 61 6e 6e 65 6c 49 64 5c 73 6e 75 6d 43 68 channelId\snumCh
0d80: 61 72 73 5c 72 5c 6e 5c 72 5c 6e 5c 73 5c 73 49 ars\r\n\r\n\s\sI
0d90: 66 5c 73 5c 73 63 68 61 6e 6e 65 6c 49 64 5c 73 f\s\schannelId\s
0da0: 69 73 5c 73 69 6e 5c 73 6e 6f 6e 62 6c 6f 63 6b is\sin\snonblock
0db0: 69 6e 67 5c 73 6d 6f 64 65 2c 5c 73 74 68 65 5c ing\smode,\sthe\
0dc0: 73 63 6f 6d 6d 61 6e 64 5c 73 6d 61 79 5c 73 6e scommand\smay\sn
0dd0: 6f 74 5c 73 72 65 61 64 5c 73 61 73 5c 73 6d 61 ot\sread\sas\sma
0de0: 6e 79 5c 72 5c 6e 5c 73 5c 73 63 68 61 72 61 63 ny\r\n\s\scharac
0df0: 74 65 72 73 5c 73 61 73 5c 73 72 65 71 75 65 73 ters\sas\sreques
0e00: 74 65 64 3a 5c 73 6f 6e 63 65 5c 73 61 6c 6c 5c ted:\sonce\sall\
0e10: 73 61 76 61 69 6c 61 62 6c 65 5c 73 69 6e 70 75 savailable\sinpu
0e20: 74 5c 73 68 61 73 5c 73 62 65 65 6e 5c 73 72 65 t\shas\sbeen\sre
0e30: 61 64 2c 5c 73 74 68 65 5c 73 63 6f 6d 6d 61 6e ad,\sthe\scomman
0e40: 64 5c 72 5c 6e 5c 73 5c 73 77 69 6c 6c 5c 73 72 d\r\n\s\swill\sr
0e50: 65 74 75 72 6e 5c 73 74 68 65 5c 73 64 61 74 61 eturn\sthe\sdata
0e60: 5c 73 74 68 61 74 5c 73 69 73 5c 73 61 76 61 69 \sthat\sis\savai
0e70: 6c 61 62 6c 65 5c 73 72 61 74 68 65 72 5c 73 74 lable\srather\st
0e80: 68 61 6e 5c 73 62 6c 6f 63 6b 69 6e 67 5c 73 66 han\sblocking\sf
0e90: 6f 72 5c 73 6d 6f 72 65 5c 73 69 6e 70 75 74 2e or\smore\sinput.
0ea0: 5c 72 5c 6e 5c 73 5c 73 49 66 5c 73 74 68 65 5c \r\n\s\sIf\sthe\
0eb0: 73 63 68 61 6e 6e 65 6c 5c 73 69 73 5c 73 63 6f schannel\sis\sco
0ec0: 6e 66 69 67 75 72 65 64 5c 73 74 6f 5c 73 75 73 nfigured\sto\sus
0ed0: 65 5c 73 61 5c 73 6d 75 6c 74 69 2d 62 79 74 65 e\sa\smulti-byte
0ee0: 5c 73 65 6e 63 6f 64 69 6e 67 2c 5c 73 74 68 65 \sencoding,\sthe
0ef0: 6e 5c 73 74 68 65 72 65 5c 73 6d 61 79 5c 72 5c n\sthere\smay\r\
0f00: 6e 5c 73 5c 73 61 63 74 75 61 6c 6c 79 5c 73 62 n\s\sactually\sb
0f10: 65 5c 73 73 6f 6d 65 5c 73 62 79 74 65 73 5c 73 e\ssome\sbytes\s
0f20: 72 65 6d 61 69 6e 69 6e 67 5c 73 69 6e 5c 73 74 remaining\sin\st
0f30: 68 65 5c 73 69 6e 74 65 72 6e 61 6c 5c 73 62 75 he\sinternal\sbu
0f40: 66 66 65 72 73 5c 73 5c 73 74 68 61 74 5c 73 64 ffers\s\sthat\sd
0f50: 6f 5c 73 6e 6f 74 5c 73 66 6f 72 6d 5c 72 5c 6e o\snot\sform\r\n
0f60: 5c 73 5c 73 61 5c 73 5c 73 63 6f 6d 70 6c 65 74 \s\sa\s\scomplet
0f70: 65 5c 73 63 68 61 72 61 63 74 65 72 2e 5c 73 5c e\scharacter.\s\
0f80: 73 54 68 65 73 65 5c 73 62 79 74 65 73 5c 73 77 sThese\sbytes\sw
0f90: 69 6c 6c 5c 73 6e 6f 74 5c 73 62 65 5c 73 72 65 ill\snot\sbe\sre
0fa0: 74 75 72 6e 65 64 5c 73 75 6e 74 69 6c 5c 73 61 turned\suntil\sa
0fb0: 5c 73 63 6f 6d 70 6c 65 74 65 5c 72 5c 6e 5c 73 \scomplete\r\n\s
0fc0: 5c 73 63 68 61 72 61 63 74 65 72 5c 73 69 73 5c \scharacter\sis\
0fd0: 73 61 76 61 69 6c 61 62 6c 65 5c 73 6f 72 5c 73 savailable\sor\s
0fe0: 65 6e 64 2d 6f 66 2d 66 69 6c 65 5c 73 69 73 5c end-of-file\sis\
0ff0: 73 72 65 61 63 68 65 64 2e 5c 73 5c 73 54 68 65 sreached.\s\sThe
1000: 5c 73 2d 6e 6f 6e 65 77 6c 69 6e 65 5c 73 73 77 \s-nonewline\ssw
1010: 69 74 63 68 5c 73 69 73 5c 72 5c 6e 5c 73 5c 73 itch\sis\r\n\s\s
1020: 69 67 6e 6f 72 65 64 5c 73 69 66 5c 73 74 68 65 ignored\sif\sthe
1030: 5c 73 63 6f 6d 6d 61 6e 64 5c 73 72 65 74 75 72 \scommand\sretur
1040: 6e 73 5c 73 62 65 66 6f 72 65 5c 73 72 65 61 63 ns\sbefore\sreac
1050: 68 69 6e 67 5c 73 74 68 65 5c 73 65 6e 64 5c 73 hing\sthe\send\s
1060: 6f 66 5c 73 74 68 65 5c 73 66 69 6c 65 2e 5c 72 of\sthe\sfile.\r
1070: 5c 6e 5c 72 5c 6e 54 68 65 5c 73 68 61 6e 67 69 \n\r\nThe\shangi
1080: 6e 67 5c 73 6f 63 63 75 72 73 5c 73 65 76 65 6e ng\soccurs\seven
1090: 5c 73 77 69 74 68 5c 73 61 5c 73 62 69 6e 61 72 \swith\sa\sbinar
10a0: 79 5c 73 72 65 73 6f 75 72 63 65 2c 5c 73 66 65 y\sresource,\sfe
10b0: 74 63 68 65 64 5c 73 77 69 74 68 5c 73 2d 65 6e tched\swith\s-en
10c0: 63 6f 64 69 6e 67 5c 73 62 69 6e 61 72 79 2c 5c coding\sbinary,\
10d0: 72 5c 6e 73 6f 5c 73 74 68 65 5c 73 6d 75 6c 74 r\nso\sthe\smult
10e0: 69 2d 62 79 74 65 5c 73 69 73 73 75 65 5c 73 64 i-byte\sissue\sd
10f0: 6f 65 73 5c 73 6e 6f 74 5c 73 61 72 69 73 65 2e oes\snot\sarise.
1100: 5c 73 5c 73 54 68 65 72 65 5c 73 69 73 5c 73 6e \s\sThere\sis\sn
1110: 6f 5c 73 70 72 6f 62 6c 65 6d 5c 73 77 69 74 68 o\sproblem\swith
1120: 5c 73 68 74 74 70 2c 5c 73 6f 6e 6c 79 5c 72 5c \shttp,\sonly\r\
1130: 6e 77 69 74 68 5c 73 68 74 74 70 73 5c 73 77 68 nwith\shttps\swh
1140: 65 72 65 5c 73 5b 74 6c 73 3a 3a 73 6f 63 6b 65 ere\s[tls::socke
1150: 74 5d 5c 73 69 73 5c 73 75 73 65 64 5c 73 69 6e t]\sis\sused\sin
1160: 5c 73 70 6c 61 63 65 5c 73 6f 66 5c 73 5b 73 6f \splace\sof\s[so
1170: 63 6b 65 74 5d 2e 5c 73 72 65 61 64 28 6e 29 5c cket].\sread(n)\
1180: 73 6d 61 6b 65 73 5c 72 5c 6e 63 6c 65 61 72 5c smakes\r\nclear\
1190: 73 74 68 61 74 5c 73 69 6e 5c 73 6e 6f 6e 62 6c sthat\sin\snonbl
11a0: 6f 63 6b 69 6e 67 5c 73 6d 6f 64 65 2c 5c 73 74 ocking\smode,\st
11b0: 68 65 5c 73 63 6f 6d 6d 61 6e 64 5c 73 77 69 6c he\scommand\swil
11c0: 6c 5c 73 6e 6f 74 5c 73 77 61 69 74 5c 73 74 6f l\snot\swait\sto
11d0: 5c 73 72 65 63 65 69 76 65 5c 73 74 68 65 5c 73 \sreceive\sthe\s
11e0: 6e 75 6d 62 65 72 5c 72 5c 6e 6f 66 5c 73 63 68 number\r\nof\sch
11f0: 61 72 61 63 74 65 72 73 5c 73 72 65 71 75 65 73 aracters\sreques
1200: 74 65 64 2e 5c 72 5c 6e 5c 72 5c 6e 45 78 61 6d ted.\r\n\r\nExam
1210: 70 6c 65 5c 73 63 6f 64 65 5c 73 74 68 61 74 5c ple\scode\sthat\
1220: 73 64 65 6d 6f 6e 73 74 72 61 74 65 73 5c 73 74 sdemonstrates\st
1230: 68 65 5c 73 64 65 6c 61 79 3a 5c 72 5c 6e 5c 72 he\sdelay:\r\n\r
1240: 5c 6e 23 5c 73 54 68 65 5c 73 68 74 74 70 5c 73 \n#\sThe\shttp\s
1250: 70 61 63 6b 61 67 65 5c 73 73 65 74 73 5c 73 62 package\ssets\sb
1260: 6f 74 68 5c 73 74 68 65 5c 73 2d 62 75 66 66 65 oth\sthe\s-buffe
1270: 72 73 69 7a 65 5c 73 66 6f 72 5c 73 74 68 65 5c rsize\sfor\sthe\
1280: 73 73 6f 63 6b 65 74 2c 5c 73 61 6e 64 5c 73 74 ssocket,\sand\st
1290: 68 65 5c 73 6e 75 6d 62 65 72 5c 73 6f 66 5c 72 he\snumber\sof\r
12a0: 5c 6e 23 5c 73 62 79 74 65 73 5c 73 72 65 71 75 \n#\sbytes\srequ
12b0: 65 73 74 65 64 5c 73 77 69 74 68 5c 73 5b 72 65 ested\swith\s[re
12c0: 61 64 5d 2c 5c 73 74 6f 5c 73 74 68 65 5c 73 68 ad],\sto\sthe\sh
12d0: 74 74 70 3a 3a 67 65 74 75 72 6c 5c 73 6f 70 74 ttp::geturl\sopt
12e0: 69 6f 6e 5c 73 2d 62 6c 6f 63 6b 73 69 7a 65 2c ion\s-blocksize,
12f0: 5c 73 77 68 69 63 68 5c 73 68 61 73 5c 72 5c 6e \swhich\shas\r\n
1300: 23 5c 73 64 65 66 61 75 6c 74 5c 73 76 61 6c 75 #\sdefault\svalu
1310: 65 5c 73 38 31 39 32 2e 5c 72 5c 6e 5c 72 5c 6e e\s8192.\r\n\r\n
1320: 70 61 63 6b 61 67 65 5c 73 72 65 71 75 69 72 65 package\srequire
1330: 5c 73 68 74 74 70 5c 72 5c 6e 5c 72 5c 6e 73 65 \shttp\r\n\r\nse
1340: 74 5c 73 73 74 61 72 74 5c 73 5b 63 6c 6f 63 6b t\sstart\s[clock
1350: 5c 73 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 5d 5c \smilliseconds]\
1360: 72 5c 6e 5c 72 5c 6e 70 72 6f 63 5c 73 68 74 74 r\n\r\nproc\shtt
1370: 70 3a 3a 4c 6f 67 5c 73 7b 61 72 67 73 7d 5c 73 p::Log\s{args}\s
1380: 7b 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 73 65 74 {\r\n\s\s\s\sset
1390: 5c 73 74 69 6d 65 5c 73 5b 65 78 70 72 5c 73 7b \stime\s[expr\s{
13a0: 5b 63 6c 6f 63 6b 5c 73 6d 69 6c 6c 69 73 65 63 [clock\smillisec
13b0: 6f 6e 64 73 5d 5c 73 2d 5c 73 24 3a 3a 73 74 61 onds]\s-\s$::sta
13c0: 72 74 7d 5d 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 rt}]\r\n\s\s\s\s
13d0: 70 75 74 73 5c 73 73 74 64 65 72 72 5c 73 5b 6c puts\sstderr\s[l
13e0: 69 73 74 5c 73 24 74 69 6d 65 5c 73 7b 2a 7d 24 ist\s$time\s{*}$
13f0: 61 72 67 73 5d 5c 72 5c 6e 5c 73 5c 73 5c 73 5c args]\r\n\s\s\s\
1400: 73 66 6c 75 73 68 5c 73 73 74 64 65 72 72 5c 72 sflush\sstderr\r
1410: 5c 6e 5c 73 5c 73 5c 73 5c 73 72 65 74 75 72 6e \n\s\s\s\sreturn
1420: 5c 72 5c 6e 7d 5c 72 5c 6e 5c 72 5c 6e 70 61 63 \r\n}\r\n\r\npac
1430: 6b 61 67 65 5c 73 72 65 71 75 69 72 65 5c 73 74 kage\srequire\st
1440: 6c 73 5c 72 5c 6e 68 74 74 70 3a 3a 72 65 67 69 ls\r\nhttp::regi
1450: 73 74 65 72 5c 73 68 74 74 70 73 5c 73 34 34 33 ster\shttps\s443
1460: 5c 73 5b 6c 69 73 74 5c 73 3a 3a 74 6c 73 3a 3a \s[list\s::tls::
1470: 73 6f 63 6b 65 74 5c 73 2d 73 73 6c 32 5c 73 30 socket\s-ssl2\s0
1480: 5c 73 2d 73 73 6c 33 5c 73 30 5c 73 2d 74 6c 73 \s-ssl3\s0\s-tls
1490: 31 5c 73 31 5c 73 2d 74 6c 73 31 2e 31 5c 73 31 1\s1\s-tls1.1\s1
14a0: 5c 73 2d 74 6c 73 31 2e 32 5c 73 31 5d 5c 72 5c \s-tls1.2\s1]\r\
14b0: 6e 5c 72 5c 6e 70 72 6f 63 5c 73 47 65 74 46 72 n\r\nproc\sGetFr
14c0: 6f 6d 57 65 62 5c 73 7b 62 6c 6f 63 6b 73 69 7a omWeb\s{blocksiz
14d0: 65 5c 73 75 72 6c 7d 5c 73 7b 5c 72 5c 6e 5c 73 e\surl}\s{\r\n\s
14e0: 5c 73 5c 73 5c 73 73 65 74 5c 73 3a 3a 70 72 65 \s\s\sset\s::pre
14f0: 76 53 69 7a 65 5c 73 30 5c 72 5c 6e 5c 73 5c 73 vSize\s0\r\n\s\s
1500: 5c 73 5c 73 73 65 74 5c 73 74 6f 6b 65 6e 5c 73 \s\sset\stoken\s
1510: 5c 73 5c 73 5c 73 5b 3a 3a 68 74 74 70 3a 3a 67 \s\s\s[::http::g
1520: 65 74 75 72 6c 5c 73 24 75 72 6c 5c 73 5c 73 5c eturl\s$url\s\s\
1530: 73 5c 73 5c 73 5c 5c 5c 72 5c 6e 5c 73 5c 73 5c s\s\s\\\r\n\s\s\
1540: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c s\s\s\s\s\s\s\s\
1550: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c s\s\s\s\s\s\s\s\
1560: 73 2d 62 6c 6f 63 6b 73 69 7a 65 5c 73 24 62 6c s-blocksize\s$bl
1570: 6f 63 6b 73 69 7a 65 5c 73 5c 73 5c 5c 5c 72 5c ocksize\s\s\\\r\
1580: 6e 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c n\s\s\s\s\s\s\s\
1590: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c s\s\s\s\s\s\s\s\
15a0: 73 5c 73 5c 73 5c 73 2d 6b 65 65 70 61 6c 69 76 s\s\s\s-keepaliv
15b0: 65 5c 73 31 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 e\s1\s\s\s\s\s\s
15c0: 5c 73 5c 73 5c 73 5c 73 5c 73 5c 5c 5c 72 5c 6e \s\s\s\s\s\\\r\n
15d0: 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 \s\s\s\s\s\s\s\s
15e0: 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 \s\s\s\s\s\s\s\s
15f0: 5c 73 5c 73 5c 73 2d 70 72 6f 67 72 65 73 73 5c \s\s\s-progress\
1600: 73 68 74 74 70 50 72 6f 67 72 65 73 73 5c 73 5c shttpProgress\s\
1610: 5c 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 5c 73 5c \\r\n\s\s\s\s\s\
1620: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c s\s\s\s\s\s\s\s\
1630: 73 5c 73 5c 73 5c 73 5c 73 5c 73 2d 68 65 61 64 s\s\s\s\s\s-head
1640: 65 72 73 5c 73 7b 61 63 63 65 70 74 2d 65 6e 63 ers\s{accept-enc
1650: 6f 64 69 6e 67 5c 73 75 6e 73 75 70 70 6f 72 74 oding\sunsupport
1660: 65 64 7d 5c 73 5c 5c 5c 72 5c 6e 5c 73 5c 73 5c ed}\s\\\r\n\s\s\
1670: 73 5c 73 5d 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 s\s]\r\n\s\s\s\s
1680: 61 72 72 61 79 5c 73 67 65 74 5c 73 24 74 6f 6b array\sget\s$tok
1690: 65 6e 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 23 5c en\r\n\s\s\s\s#\
16a0: 73 4e 2e 42 2e 5c 73 49 6d 70 6c 69 63 69 74 5c sN.B.\sImplicit\
16b0: 73 52 65 74 75 72 6e 5c 72 5c 6e 7d 5c 72 5c 6e sReturn\r\n}\r\n
16c0: 5c 72 5c 6e 70 72 6f 63 5c 73 68 74 74 70 50 72 \r\nproc\shttpPr
16d0: 6f 67 72 65 73 73 5c 73 7b 74 6f 6b 65 6e 5c 73 ogress\s{token\s
16e0: 74 6f 74 61 6c 5c 73 63 75 72 72 65 6e 74 7d 5c total\scurrent}\
16f0: 73 7b 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 75 70 s{\r\n\s\s\s\sup
1700: 76 61 72 5c 73 30 5c 73 24 74 6f 6b 65 6e 5c 73 var\s0\s$token\s
1710: 73 74 61 74 65 5c 72 5c 6e 5c 73 5c 73 5c 73 5c state\r\n\s\s\s\
1720: 73 73 65 74 5c 73 6d 73 67 5c 73 7b 2c 5c 73 61 sset\smsg\s{,\sa
1730: 6e 64 5c 73 74 68 65 72 65 66 6f 72 65 5c 73 77 nd\stherefore\sw
1740: 69 6c 6c 5c 73 6e 6f 74 5c 73 64 65 6d 6f 6e 73 ill\snot\sdemons
1750: 74 72 61 74 65 5c 73 74 68 65 5c 73 62 75 67 2e trate\sthe\sbug.
1760: 7d 5c 72 5c 6e 5c 72 5c 6e 5c 73 5c 73 5c 73 5c }\r\n\r\n\s\s\s\
1770: 73 69 66 5c 73 7b 5c 73 5c 73 5c 73 5c 73 5b 69 sif\s{\s\s\s\s[i
1780: 6e 66 6f 5c 73 65 78 69 73 74 73 5c 73 73 74 61 nfo\sexists\ssta
1790: 74 65 28 74 72 61 6e 73 66 65 72 29 5d 5c 72 5c te(transfer)]\r\
17a0: 6e 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c n\s\s\s\s\s\s\s\
17b0: 73 5c 73 26 26 5c 73 28 24 73 74 61 74 65 28 74 s\s&&\s($state(t
17c0: 72 61 6e 73 66 65 72 29 5c 73 65 71 5c 73 22 63 ransfer)\seq\s"c
17d0: 68 75 6e 6b 65 64 22 29 5c 72 5c 6e 5c 73 5c 73 hunked")\r\n\s\s
17e0: 5c 73 5c 73 7d 5c 73 7b 5c 72 5c 6e 5c 74 70 75 \s\s}\s{\r\n\tpu
17f0: 74 73 5c 73 22 54 68 65 5c 73 72 65 73 70 6f 6e ts\s"The\srespon
1800: 73 65 5c 73 75 73 65 73 5c 73 63 68 75 6e 6b 65 se\suses\schunke
1810: 64 5c 73 74 72 61 6e 73 66 65 72 5c 73 65 6e 63 d\stransfer\senc
1820: 6f 64 69 6e 67 2c 5c 73 24 6d 73 67 22 5c 72 5c oding,\s$msg"\r\
1830: 6e 5c 73 5c 73 5c 73 5c 73 7d 5c 73 65 6c 73 65 n\s\s\s\s}\selse
1840: 69 66 5c 73 7b 24 74 6f 74 61 6c 5c 73 3d 3d 5c if\s{$total\s==\
1850: 73 30 7d 5c 73 7b 5c 72 5c 6e 5c 74 70 75 74 73 s0}\s{\r\n\tputs
1860: 5c 73 22 54 68 65 5c 73 73 65 72 76 65 72 5c 73 \s"The\sserver\s
1870: 68 61 73 5c 73 6e 6f 74 5c 73 72 65 70 6f 72 74 has\snot\sreport
1880: 65 64 5c 73 74 68 65 5c 73 73 69 7a 65 5c 73 6f ed\sthe\ssize\so
1890: 66 5c 73 74 68 65 5c 73 65 6e 74 69 74 79 2c 5c f\sthe\sentity,\
18a0: 73 24 6d 73 67 22 5c 72 5c 6e 5c 73 5c 73 5c 73 s$msg"\r\n\s\s\s
18b0: 5c 73 7d 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 69 \s}\r\n\s\s\s\si
18c0: 66 5c 73 7b 24 73 74 61 74 65 28 63 6f 6e 6e 65 f\s{$state(conne
18d0: 63 74 69 6f 6e 29 5c 73 65 71 5c 73 7b 63 6c 6f ction)\seq\s{clo
18e0: 73 65 7d 7d 5c 73 7b 5c 72 5c 6e 5c 74 70 75 74 se}}\s{\r\n\tput
18f0: 73 5c 73 22 54 68 65 5c 73 73 65 72 76 65 72 5c s\s"The\sserver\
1900: 73 77 69 6c 6c 5c 73 63 6c 6f 73 65 5c 73 74 68 swill\sclose\sth
1910: 65 5c 73 63 6f 6e 6e 65 63 74 69 6f 6e 2c 5c 73 e\sconnection,\s
1920: 24 6d 73 67 22 5c 72 5c 6e 5c 73 5c 73 5c 73 5c $msg"\r\n\s\s\s\
1930: 73 7d 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 73 65 s}\r\n\s\s\s\sse
1940: 74 5c 73 74 69 6d 65 5c 73 5b 65 78 70 72 5c 73 t\stime\s[expr\s
1950: 7b 5b 63 6c 6f 63 6b 5c 73 6d 69 6c 6c 69 73 65 {[clock\smillise
1960: 63 6f 6e 64 73 5d 5c 73 2d 5c 73 24 3a 3a 73 74 conds]\s-\s$::st
1970: 61 72 74 7d 5d 5c 72 5c 6e 5c 73 5c 73 5c 73 5c art}]\r\n\s\s\s\
1980: 73 73 65 74 5c 73 65 78 74 72 61 5c 73 5b 65 78 sset\sextra\s[ex
1990: 70 72 5c 73 7b 24 63 75 72 72 65 6e 74 5c 73 2d pr\s{$current\s-
19a0: 5c 73 24 3a 3a 70 72 65 76 53 69 7a 65 7d 5d 5c \s$::prevSize}]\
19b0: 72 5c 6e 5c 73 5c 73 5c 73 5c 73 73 65 74 5c 73 r\n\s\s\s\sset\s
19c0: 3a 3a 70 72 65 76 53 69 7a 65 5c 73 24 63 75 72 ::prevSize\s$cur
19d0: 72 65 6e 74 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 rent\r\n\s\s\s\s
19e0: 70 75 74 73 5c 73 22 24 74 69 6d 65 5c 73 46 65 puts\s"$time\sFe
19f0: 74 63 68 65 64 5c 73 24 65 78 74 72 61 5c 73 62 tched\s$extra\sb
1a00: 79 74 65 73 5c 73 2d 5c 73 61 63 63 75 6d 75 6c ytes\s-\saccumul
1a10: 61 74 65 64 5c 73 24 63 75 72 72 65 6e 74 5c 73 ated\s$current\s
1a20: 62 79 74 65 73 5c 73 6f 66 5c 73 74 6f 74 61 6c bytes\sof\stotal
1a30: 5c 73 24 74 6f 74 61 6c 22 5c 72 5c 6e 5c 73 5c \s$total"\r\n\s\
1a40: 73 5c 73 5c 73 66 6c 75 73 68 5c 73 73 74 64 6f s\s\sflush\sstdo
1a50: 75 74 5c 72 5c 6e 7d 5c 72 5c 6e 5c 72 5c 6e 5c ut\r\n}\r\n\r\n\
1a60: 72 5c 6e 73 65 74 5c 73 62 6c 6f 63 6b 73 69 7a r\nset\sblocksiz
1a70: 65 5c 73 38 31 39 32 5c 72 5c 6e 5c 72 5c 6e 23 e\s8192\r\n\r\n#
1a80: 5c 73 54 68 69 73 5c 73 55 52 4c 5c 73 73 65 72 \sThis\sURL\sser
1a90: 76 65 73 5c 73 28 61 74 5c 73 6c 65 61 73 74 5c ves\s(at\sleast\
1aa0: 73 69 6e 5c 73 74 68 65 5c 73 55 4b 29 5c 73 61 sin\sthe\sUK)\sa
1ab0: 5c 73 72 65 73 6f 75 72 63 65 5c 73 6f 66 5c 73 \sresource\sof\s
1ac0: 61 62 6f 75 74 5c 73 33 30 30 6b 42 2c 5c 73 75 about\s300kB,\su
1ad0: 6e 63 68 75 6e 6b 65 64 2c 5c 73 61 6e 64 5c 72 nchunked,\sand\r
1ae0: 5c 6e 23 5c 73 74 69 6d 65 73 5c 73 6f 75 74 5c \n#\stimes\sout\
1af0: 73 61 66 74 65 72 5c 73 61 70 70 72 6f 78 5c 73 safter\sapprox\s
1b00: 31 33 73 2e 5c 72 5c 6e 5c 72 5c 6e 73 65 74 5c 13s.\r\n\r\nset\
1b10: 73 75 72 6c 5c 73 68 74 74 70 73 3a 2f 2f 77 77 surl\shttps://ww
1b20: 77 2e 62 62 63 2e 63 6f 2e 75 6b 2f 5c 72 5c 6e w.bbc.co.uk/\r\n
1b30: 5c 72 5c 6e 23 5c 73 54 68 65 73 65 5c 73 55 52 \r\n#\sThese\sUR
1b40: 4c 73 5c 73 64 65 6d 6f 6e 73 74 72 61 74 65 5c Ls\sdemonstrate\
1b50: 73 74 68 61 74 5c 73 68 74 74 70 5c 73 73 69 74 sthat\shttp\ssit
1b60: 65 73 5c 73 28 75 73 69 6e 67 5c 73 5b 73 6f 63 es\s(using\s[soc
1b70: 6b 65 74 5d 29 5c 73 64 6f 5c 73 6e 6f 74 5c 72 ket])\sdo\snot\r
1b80: 5c 6e 23 5c 73 74 72 69 67 67 65 72 5c 73 74 68 \n#\strigger\sth
1b90: 65 5c 73 62 75 67 2e 5c 72 5c 6e 5c 72 5c 6e 23 e\sbug.\r\n\r\n#
1ba0: 5c 73 73 65 74 5c 73 75 72 6c 5c 73 68 74 74 70 \sset\surl\shttp
1bb0: 3a 2f 2f 6e 65 77 73 2e 6d 69 74 2e 65 64 75 2f ://news.mit.edu/
1bc0: 73 69 74 65 73 2f 6d 69 74 2e 65 64 75 2e 6e 65 sites/mit.edu.ne
1bd0: 77 73 6f 66 66 69 63 65 2f 66 69 6c 65 73 2f 73 wsoffice/files/s
1be0: 74 79 6c 65 73 2f 6e 65 77 73 5f 61 72 74 69 63 tyles/news_artic
1bf0: 6c 65 5f 69 6d 61 67 65 5f 74 6f 70 5f 73 6c 69 le_image_top_sli
1c00: 64 65 73 68 6f 77 2f 70 75 62 6c 69 63 2f 69 6d deshow/public/im
1c10: 61 67 65 73 2f 32 30 31 38 2f 4d 49 54 2d 44 65 ages/2018/MIT-De
1c20: 62 72 69 73 2d 44 69 73 6b 73 5f 30 2e 6a 70 67 bris-Disks_0.jpg
1c30: 3f 69 74 6f 6b 3d 6b 47 69 6d 30 31 58 7a 5c 72 ?itok=kGim01Xz\r
1c40: 5c 6e 23 5c 73 73 65 74 5c 73 75 72 6c 5c 73 68 \n#\sset\surl\sh
1c50: 74 74 70 3a 2f 2f 73 74 61 74 69 63 30 31 2e 6e ttp://static01.n
1c60: 79 74 2e 63 6f 6d 2f 69 6d 61 67 65 73 2f 32 30 yt.com/images/20
1c70: 31 38 2f 30 33 2f 33 30 2f 74 68 65 61 74 65 72 18/03/30/theater
1c80: 2f 33 30 74 68 72 65 65 74 61 6c 6c 77 6f 6d 65 /30threetallwome
1c90: 6e 32 2f 6d 65 72 6c 69 6e 5f 31 33 35 39 31 31 n2/merlin_135911
1ca0: 32 35 36 5f 65 32 39 31 31 66 33 33 2d 38 62 33 256_e2911f33-8b3
1cb0: 35 2d 34 34 35 64 2d 39 30 65 65 2d 64 31 35 34 5-445d-90ee-d154
1cc0: 35 37 63 31 39 66 61 65 2d 73 75 70 65 72 4a 75 57c19fae-superJu
1cd0: 6d 62 6f 2e 6a 70 67 5c 72 5c 6e 5c 72 5c 6e 23 mbo.jpg\r\n\r\n#
1ce0: 5c 73 54 68 65 5c 73 63 6f 72 72 65 73 70 6f 6e \sThe\scorrespon
1cf0: 64 69 6e 67 5c 73 68 74 74 70 73 5c 73 55 52 4c ding\shttps\sURL
1d00: 73 5c 73 64 6f 5c 73 74 72 69 67 67 65 72 5c 73 s\sdo\strigger\s
1d10: 74 68 65 5c 73 62 75 67 2c 5c 73 62 75 74 5c 73 the\sbug,\sbut\s
1d20: 61 72 65 5c 73 69 6e 63 6f 6e 76 65 6e 69 65 6e are\sinconvenien
1d30: 74 5c 73 74 6f 5c 73 75 73 65 5c 72 5c 6e 23 5c t\sto\suse\r\n#\
1d40: 73 62 65 63 61 75 73 65 5c 73 74 68 65 5c 73 73 sbecause\sthe\ss
1d50: 65 72 76 65 72 5c 73 64 6f 65 73 5c 73 6e 6f 74 erver\sdoes\snot
1d60: 5c 73 74 69 6d 65 5c 73 6f 75 74 5c 73 66 6f 72 \stime\sout\sfor
1d70: 5c 73 61 62 6f 75 74 5c 73 31 30 5c 73 6d 69 6e \sabout\s10\smin
1d80: 75 74 65 73 2e 5c 72 5c 6e 5c 72 5c 6e 23 5c 73 utes.\r\n\r\n#\s
1d90: 73 65 74 5c 73 75 72 6c 5c 73 68 74 74 70 73 3a set\surl\shttps:
1da0: 2f 2f 6e 65 77 73 2e 6d 69 74 2e 65 64 75 2f 73 //news.mit.edu/s
1db0: 69 74 65 73 2f 6d 69 74 2e 65 64 75 2e 6e 65 77 ites/mit.edu.new
1dc0: 73 6f 66 66 69 63 65 2f 66 69 6c 65 73 2f 73 74 soffice/files/st
1dd0: 79 6c 65 73 2f 6e 65 77 73 5f 61 72 74 69 63 6c yles/news_articl
1de0: 65 5f 69 6d 61 67 65 5f 74 6f 70 5f 73 6c 69 64 e_image_top_slid
1df0: 65 73 68 6f 77 2f 70 75 62 6c 69 63 2f 69 6d 61 eshow/public/ima
1e00: 67 65 73 2f 32 30 31 38 2f 4d 49 54 2d 44 65 62 ges/2018/MIT-Deb
1e10: 72 69 73 2d 44 69 73 6b 73 5f 30 2e 6a 70 67 3f ris-Disks_0.jpg?
1e20: 69 74 6f 6b 3d 6b 47 69 6d 30 31 58 7a 5c 72 5c itok=kGim01Xz\r\
1e30: 6e 23 5c 73 73 65 74 5c 73 75 72 6c 5c 73 68 74 n#\sset\surl\sht
1e40: 74 70 73 3a 2f 2f 73 74 61 74 69 63 30 31 2e 6e tps://static01.n
1e50: 79 74 2e 63 6f 6d 2f 69 6d 61 67 65 73 2f 32 30 yt.com/images/20
1e60: 31 38 2f 30 33 2f 33 30 2f 74 68 65 61 74 65 72 18/03/30/theater
1e70: 2f 33 30 74 68 72 65 65 74 61 6c 6c 77 6f 6d 65 /30threetallwome
1e80: 6e 32 2f 6d 65 72 6c 69 6e 5f 31 33 35 39 31 31 n2/merlin_135911
1e90: 32 35 36 5f 65 32 39 31 31 66 33 33 2d 38 62 33 256_e2911f33-8b3
1ea0: 35 2d 34 34 35 64 2d 39 30 65 65 2d 64 31 35 34 5-445d-90ee-d154
1eb0: 35 37 63 31 39 66 61 65 2d 73 75 70 65 72 4a 75 57c19fae-superJu
1ec0: 6d 62 6f 2e 6a 70 67 5c 72 5c 6e 5c 72 5c 6e 73 mbo.jpg\r\n\r\ns
1ed0: 65 74 5c 73 73 74 61 72 74 5c 73 5b 63 6c 6f 63 et\sstart\s[cloc
1ee0: 6b 5c 73 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 5d k\smilliseconds]
1ef0: 5c 72 5c 6e 73 65 74 5c 73 69 6d 67 5c 73 5b 47 \r\nset\simg\s[G
1f00: 65 74 46 72 6f 6d 57 65 62 5c 73 24 62 6c 6f 63 etFromWeb\s$bloc
1f10: 6b 73 69 7a 65 5c 73 24 75 72 6c 5d 5c 72 5c 6e ksize\s$url]\r\n
1f20: 73 65 74 5c 73 4e 55 4c 5c 73 7b 7d 0a 4a 20 6c set\sNUL\s{}.J l
1f30: 6f 67 69 6e 20 61 6e 6f 6e 79 6d 6f 75 73 0a 4a ogin anonymous.J
1f40: 20 6d 69 6d 65 74 79 70 65 20 74 65 78 74 2f 70 mimetype text/p
1f50: 6c 61 69 6e 0a 4a 20 70 72 69 76 61 74 65 5f 63 lain.J private_c
1f60: 6f 6e 74 61 63 74 20 61 37 37 34 62 31 66 35 36 ontact a774b1f56
1f70: 35 33 64 63 33 33 36 30 65 32 39 65 61 37 64 36 53dc3360e29ea7d6
1f80: 33 35 61 36 34 65 39 34 63 39 66 31 64 61 62 0a 35a64e94c9f1dab.
1f90: 4a 20 73 65 76 65 72 69 74 79 20 49 6d 70 6f 72 J severity Impor
1fa0: 74 61 6e 74 0a 4a 20 73 74 61 74 75 73 20 4f 70 tant.J status Op
1fb0: 65 6e 0a 4a 20 74 69 74 6c 65 20 42 75 66 66 65 en.J title Buffe
1fc0: 72 69 6e 67 5c 73 75 6e 74 69 6c 5c 73 74 69 6d ring\suntil\stim
1fd0: 65 6f 75 74 0a 4a 20 74 79 70 65 20 49 6e 63 69 eout.J type Inci
1fe0: 64 65 6e 74 0a 4b 20 39 34 63 36 61 34 33 31 66 dent.K 94c6a431f
1ff0: 65 65 34 37 61 63 64 62 35 39 30 65 65 33 39 36 ee47acdb590ee396
2000: 33 37 30 34 65 66 31 64 37 35 36 61 35 63 66 0a 3704ef1d756a5cf.
2010: 55 20 61 6e 6f 6e 79 6d 6f 75 73 0a 5a 20 39 65 U anonymous.Z 9e
2020: 64 64 62 31 30 37 65 38 66 31 32 36 34 66 30 65 ddb107e8f1264f0e
2030: 31 65 62 65 66 36 31 34 36 33 63 34 33 31 0a 1ebef61463c431.