Skip to content

Commit e9661a3

Browse files
authored
Fix[mqbblp_remotequeue.cpp]: crash in RemoteQueue::close (#563)
Signed-off-by: Evgeny Malygin <[email protected]>
1 parent 88fe620 commit e9661a3

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

src/groups/mqb/mqbblp/mqbblp_remotequeue.cpp

+6-1
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,12 @@ void RemoteQueue::close()
580580
// (unless StopRequest has timed out) all downstreams have closed all
581581
// queues.
582582

583+
// `close()` might be called multiple times
584+
if (!d_self.isValid()) {
585+
return; // RETURN
586+
}
587+
d_self.invalidate();
588+
583589
size_t numMessages = erasePendingMessages(d_pendingMessages.end());
584590

585591
BALL_LOG_INFO << d_state_p->uri() << ": erased all " << numMessages
@@ -588,7 +594,6 @@ void RemoteQueue::close()
588594

589595
BSLS_ASSERT_SAFE(d_pendingMessages.size() == 0);
590596

591-
d_self.invalidate();
592597
if (d_pendingMessagesTimerEventHandle) {
593598
scheduler()->cancelEventAndWait(&d_pendingMessagesTimerEventHandle);
594599
// 'expirePendingMessagesDispatched' does not restart timer if

0 commit comments

Comments
 (0)