Skip to content

Heartbeat sender being a weak ref can cause the client to miss sending heartbeats #224

Open
@aurban-iqmessenger

Description

@aurban-iqmessenger

Describe the bug

Connection is dropped shortly after success because of absent heartbeat.

Reproduction steps

  1. Update to 0.12.0
  2. Create an RMQConnection instance with some heartbeat interval, 2 seconds for example
  3. Connect
  4. In several seconds connection is closed by remote peer. Server logs report there were no heartbeats.

Expected behavior

Connection is long-lived

Additional context

Debugged this to the -[RMQConnection start:] method, upon completion of a handshake the first thing the connection does is [strongThis.heartbeatSender startWithInterval:@(heartbeatTimeout.integerValue / 2)];, but the heartbeatSender is nil. heartbeatSender was created during the initialization, though. Found it has been made weak in #194.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions