fix some crashes, mostly related to network requests (#6187)

This commit is contained in:
pajlada
2025-05-17 14:22:56 +02:00
committed by GitHub
parent 46f3299a25
commit 6b968a199c
17 changed files with 259 additions and 81 deletions
@@ -75,6 +75,11 @@ void Connection::onNotification(const lib::messages::Metadata &metadata,
void Connection::onClose(std::unique_ptr<lib::Listener> self,
const std::optional<std::string> &reconnectURL)
{
if (isAppAboutToQuit())
{
return;
}
auto *app = tryGetApp();
if (!app)
{
+19 -2
View File
@@ -104,7 +104,10 @@ Controller::~Controller()
connection->close();
}
this->subscriptions.clear();
{
std::lock_guard lock(this->subscriptionsMutex);
this->subscriptions.clear();
}
this->work.reset();
@@ -341,7 +344,7 @@ void Controller::subscribe(const SubscriptionRequest &request, bool isRetry)
qCDebug(LOG) << "Make helix request for" << request;
getHelix()->createEventSubSubscription(
request, listener->getSessionID(),
[this, request, connection,
[this, request,
weakConnection{std::weak_ptr<lib::Session>(connection)}](
const auto &res) {
qCDebug(LOG) << "Subscription success" << request;
@@ -507,6 +510,12 @@ void Controller::registerConnection(std::weak_ptr<lib::Session> &&connection)
void Controller::retrySubscription(const SubscriptionRequest &request)
{
if (isAppAboutToQuit())
{
qCDebug(LOG) << "retrySubscription, but app is quitting" << request;
return;
}
std::lock_guard lock(this->subscriptionsMutex);
auto &subscription = this->subscriptions[request];
@@ -536,6 +545,14 @@ void Controller::retrySubscription(const SubscriptionRequest &request)
std::make_unique<boost::asio::system_timer>(this->ioContext);
retryTimer->expires_after(subscription.backoff.next() + jitter);
retryTimer->async_wait([this, request](const auto &ec) {
if (isAppAboutToQuit())
{
qCDebug(LOG)
<< "Retry was going to fire, but app is quitting so we won't."
<< request;
return;
}
if (!ec)
{
qCDebug(LOG) << "Firing retry" << request;