rabbitmq-objc-client icon indicating copy to clipboard operation
rabbitmq-objc-client copied to clipboard

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

Open aurban-iqmessenger opened this issue 1 year ago • 3 comments

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.

aurban-iqmessenger avatar Nov 24 '23 07:11 aurban-iqmessenger