Skip to content

KeepAlive impl does not respect spec #513

@mostroverkhov

Description

@mostroverkhov
  • Client assumes KeepAlives are optional, and this not true according to spec: for SETUP frame, Time Between KEEPALIVE Frames must be > 0.

  • In above case client still sends ackTimeout as Time Between KEEPALIVE Frames in 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 ackTimeout instead of tickInterval as Time Between KEEPALIVE Frames, and missedAcks*ackTimeout for Max 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions