Hex Artifact Content

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.