Hi Christopher,

Thanks for the hint. I was able to replicate it and capture the following from 
`show sess all`:

0x562d78315da0: [08/Sep/2023:11:33:40.093147] id=32890 proto=tcpv4 
source=<CLIENTIP>:34452
  flags=0x100c4a, conn_retries=0, conn_exp=<NEVER> conn_et=0x000 
srv_conn=0x562d77d74d60, pend_pos=(nil) waiting=0 epoch=0x3
  frontend=stadiamaps (id=3 mode=http), listener=? (id=3) addr=<SRVIP>:443
  backend=varnish (id=4 mode=http) addr=unix
  server=varnish_local (id=1) addr=unix
  task=0x562d781fba60 (state=0x00 nice=0 calls=2 rate=0 exp=38s tid=0(1/0) 
age=21s)
  txn=0x562d78373dc0 flags=0x843000 meth=1 status=404 req.st=MSG_DONE 
rsp.st=MSG_DATA req.f=0x4c rsp.f=0x0d
  scf=0x562d780c0fd0 flags=0x00002402 state=EST 
endp=CONN,0x562d782bd030,0x05005001 sub=1 rex=2m38s wex=<NEVER>
      h2s=0x562d782bd030 h2s.id=1 .st=HCR .flg=0x7001 .rxbuf=0@(nil)+0/0
      .sc=0x562d780c0fd0(.flg=0x00002402 .app=0x562d78315da0) 
.sd=0x562d78a50490(.flg=0x05005001)
      .subs=0x562d780c0fe8(ev=1 tl=0x562d78655590 tl.calls=0 
tl.ctx=0x562d780c0fd0 tl.fct=sc_conn_io_cb)
      h2c=0x562d78843ea0 h2c.st0=FRH .err=0 .maxid=1 .lastid=-1 .flg=0x0200 
.nbst=1 .nbsc=1
      .fctl_cnt=0 .send_cnt=0 .tree_cnt=1 .orph_cnt=0 .sub=1 .dsi=0 
.dbuf=0@(nil)+0/0
      .mbuf=[1..1|32],h=[0@(nil)+0/0],t=[0@(nil)+0/0] .task=0x562d78f317f0 
.exp=<NEVER>
      co0=0x562d783e5d70 ctrl=tcpv4 xprt=SSL mux=H2 data=STRM 
target=LISTENER:0x562d774e7ec0
      flags=0x80000300 fd=209 fd.state=121 updt=0 fd.tmask=0x1
  scb=0x562d78022fb0 flags=0x00001013 state=EST 
endp=CONN,0x562d77fad040,0x05004001 sub=1 rex=38s wex=<NEVER>
      h1s=0x562d77fad040 h1s.flg=0x4090 .sd.flg=0x5004001 .req.state=MSG_DONE 
.res.state=MSG_DONE
      .meth=GET status=404 .sd.flg=0x05004001 .sc.flg=0x00001013 
.sc.app=0x562d78315da0
      .subs=0x562d78022fc8(ev=1 tl=0x562d785fbbb0 tl.calls=2 
tl.ctx=0x562d78022fb0 tl.fct=sc_conn_io_cb)
      h1c=0x562d78f71f70 h1c.flg=0x80000000 .sub=0 .ibuf=0@(nil)+0/0 
.obuf=0@(nil)+0/0 .task=0x562d78c95990 .exp=<NEVER>
      co1=0x562d78955070 ctrl=unix_stream xprt=RAW mux=H1 data=STRM 
target=SERVER:0x562d77d74d60
      flags=0x00000300 fd=172 fd.state=120 updt=0 fd.tmask=0x1
  req=0x562d78315dc0 (f=0x20848000 an=0x48000 pipe=0 tofwd=0 total=158)
      an_exp=<NEVER> buf=0x562d78315dc8 data=(nil) o=0 p=0 i=0 size=0
      htx=0x562d7641d860 flags=0x0 size=0 data=0 used=0 wrap=NO extra=0
  res=0x562d78315e10 (f=0xa0040000 an=0x24000000 pipe=0 tofwd=0 total=498)
      an_exp=1m41s buf=0x562d78315e18 data=0x562d78a25f50 o=0 p=0 i=16384 
size=16384
      htx=0x562d78a25f50 flags=0x14 size=16336 data=301 used=1 wrap=NO extra=0

Anything obvious to you? The data size is 301 bytes and it just hangs after 
receiving headers for a few seconds (more than 6, but I'm not sure exactly how 
many). It seems to flush the buffer as soon as some timeout triggers.

I'm still on 2.8.2, and based on what you said, it shouldn't matter for this .

Best,
Luke

—
Luke Seelenbinder
Stadia Maps | Founder & CEO
stadiamaps.com

> On Sep 7, 2023, at 15:40, Christopher Faulet <[email protected]> wrote:
> 
> Le 07/09/2023 à 14:52, Luke Seelenbinder a écrit :
>> Could this fix:
>> > BUG/MEDIUM: h1-htx: Ensure chunked parsing with full output buffer
>> have caused this issue with bwlim? I was only able to replicate the behavior 
>> in HTTP/1.1.
> 
> If your responses are chunked, it is possible. But only for responses 
> exceeding the buffer size. A "show sess all" may help to diagnose the bug.
> 
> -- 
> Christopher Faulet
> 

Reply via email to