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
|
varnishtest "H2 RxStuff conditions"
varnish v1 -arg "-p feature=+http2" -arg "-p debug=+syncvsl" -vcl {
backend none none;
sub vcl_recv {
return (synth(200));
}
} -start
logexpect l0 -v v1 -g vxid -q "Begin ~ sess" {
fail add * SessError
expect * * Debug {^H2: Got pu PRISM}
expect 0 = Debug {^H2: HTC eof.*frame=complete goaway=0}
expect 0 = Debug {^H2 CLEANUP H2CE_NO_ERROR}
expect 0 = ReqAcct {^0 0 0 18 26 44}
expect 0 = SessClose {^REM_CLOSE}
expect 0 = End
fail clear
} -start
# no streams open
client c0 {
txpri
shutdown -write
stream 0 {
rxsettings
rxgoaway
expect goaway.laststream == 0
expect goaway.err == NO_ERROR
} -run
} -run
logexpect l1 -v v1 -g vxid -q "Begin ~ sess" {
fail add * SessError
expect * * Debug {^H2: HTC eof.*frame=complete goaway=0}
expect 0 = Debug {^H2 CLEANUP H2CE_NO_ERROR}
expect 9 = ReqAcct {^27 0 27 27 26 53}
expect 0 = SessClose {^REM_CLOSE}
expect 0 = End
fail clear
} -start
# after frame, no END_HEADERS
client c1 {
stream 1 {
txreq -nohdrend
} -run
shutdown -write
stream 0 {
rxgoaway
expect goaway.laststream == 1
expect goaway.err == NO_ERROR
} -run
} -run
logexpect l2 -v v1 -g vxid -q "Begin ~ sess" {
fail add * SessError
expect * * Debug {^H2: HTC eof.*frame=complete goaway=0}
expect 0 = Debug {^H2 CLEANUP H2CE_NO_ERROR}
expect 9 = ReqAcct {^27 0 27 27 26 53}
expect 0 = SessClose {^REM_CLOSE}
expect 0 = End
fail clear
} -start
# after frame, no END_STREAM
client c2 {
stream 1 {
txreq -nostrend
} -run
shutdown -write
stream 0 {
rxgoaway
expect goaway.laststream == 1
expect goaway.err == NO_ERROR
} -run
} -run
logexpect l3 -v v1 -g vxid -q "Begin ~ sess" {
fail add * SessError
expect * * Debug {^H2: HTC eof.*frame=partial goaway=0}
expect 0 = Debug {^H2 CLEANUP H2CE_NO_ERROR}
expect 0 = ReqAcct {^18 0 18 27 26 53}
expect 0 = SessClose {^REM_CLOSE}
expect 0 = End
fail clear
} -start
# middle of frame
client c3 {
stream 1 {
# +- 01 END_STREAM
# +- 04 END_HEADERS
# |
# len ty fl strmid
sendhex {
000024 01 05 00000001
00053a70617468012f00073a6d6574686f640347455400073a736368656d6504687474
}
# ori:
# 00053a70617468012f00073a6d6574686f640347455400073a736368656d650468747470
} -run
shutdown -write
stream 0 {
rxgoaway
expect goaway.laststream == 0
expect goaway.err == NO_ERROR
} -run
} -run
logexpect l0 -wait
logexpect l1 -wait
logexpect l2 -wait
logexpect l3 -wait
|