-
Notifications
You must be signed in to change notification settings - Fork 357
Description
-
Client assumes KeepAlives are optional, and this not true according to spec: for SETUP frame,
Time Between KEEPALIVE Framesmust be > 0. -
In above case client still sends
ackTimeoutasTime Between KEEPALIVE Framesin SETUP (which is not 0 by default), but never actual KA frames, which for properly implemented server leads to connection close due to missing KA. -
Client sends
ackTimeoutinstead oftickIntervalasTime Between KEEPALIVE Frames, andmissedAcks*ackTimeoutforMax Lifetime. But for its own KA bookkeeping client uses formula (roughly)ackTimeout + missedAcks*tickInterval, which leads to significantly delayed connection close by properly implemented server. -
Server does not have received KA frames bookkeeping at all, which possibly leads to indefinite hang