Skip to content

Commit 6e9a049

Browse files
authored
core, proxy, handler: use DeferCall::deleteLater everywhere (#48102)
1 parent 24c4ef3 commit 6e9a049

13 files changed

+34
-21
lines changed

src/core/defercall.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class DeferCall : public QObject
4848
template <typename T>
4949
static void deleteLater(T *p)
5050
{
51-
global()->defer([=]() { delete p; });
51+
global()->defer([=] { delete p; });
5252
}
5353

5454
private slots:

src/core/processquit.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
# include <unistd.h>
3939
#endif
4040

41+
#include "defercall.h"
42+
4143
namespace {
4244

4345
// safeobj stuff, from qca
@@ -46,7 +48,7 @@ void releaseAndDeleteLater(QObject *owner, QObject *obj)
4648
{
4749
obj->disconnect(owner);
4850
obj->setParent(0);
49-
obj->deleteLater();
51+
DeferCall::deleteLater(obj);
5052
}
5153

5254
class SafeSocketNotifier : public QObject

src/core/simplehttpserver.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#include <QLocalSocket>
3131
#include <QLocalServer>
3232
#include "log.h"
33+
#include "defercall.h"
3334
#include "httpheaders.h"
3435

3536
class SimpleHttpRequest::Private : public QObject
@@ -84,7 +85,7 @@ class SimpleHttpRequest::Private : public QObject
8485
{
8586
sock->disconnect(this);
8687
sock->setParent(0);
87-
sock->deleteLater();
88+
DeferCall::deleteLater(sock);
8889
sock = 0;
8990
}
9091
}

src/core/statsmanager.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
#include "qzmqsocket.h"
3333
#include "timerwheel.h"
3434
#include "log.h"
35+
#include "defercall.h"
3536
#include "tnetstring.h"
3637
#include "httpheaders.h"
3738
#include "simplehttpserver.h"
@@ -1560,7 +1561,7 @@ class StatsManager::Private : public QObject
15601561
).arg(prometheusPrefix, m.name, m.help, prometheusPrefix, m.name, m.type, prometheusPrefix, m.name, value.toString());
15611562
}
15621563

1563-
req->finished.connect(boost::bind(&SimpleHttpRequest::deleteLater, req));
1564+
req->finished.connect([=] { DeferCall::deleteLater(req); });
15641565

15651566
HttpHeaders headers;
15661567
headers += HttpHeader("Content-Type", "text/plain");

src/core/zwebsocket.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* Copyright (C) 2014-2023 Fanout, Inc.
3-
* Copyright (C) 2023-2024 Fastly, Inc.
3+
* Copyright (C) 2023-2025 Fastly, Inc.
44
*
55
* This file is part of Pushpin.
66
*
@@ -29,6 +29,7 @@
2929
#include "zhttpresponsepacket.h"
3030
#include "log.h"
3131
#include "rtimer.h"
32+
#include "defercall.h"
3233
#include "zhttpmanager.h"
3334
#include "uuidutil.h"
3435

@@ -151,15 +152,15 @@ class ZWebSocket::Private : public QObject
151152
{
152153
expireTimerConnection.disconnect();
153154
expireTimer->setParent(0);
154-
expireTimer->deleteLater();
155+
DeferCall::deleteLater(expireTimer);
155156
expireTimer = 0;
156157
}
157158

158159
if(keepAliveTimer)
159160
{
160161
keepAliveTimerConnection.disconnect();
161162
keepAliveTimer->setParent(0);
162-
keepAliveTimer->deleteLater();
163+
DeferCall::deleteLater(keepAliveTimer);
163164
keepAliveTimer = 0;
164165
}
165166

src/handler/handlerengine.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
#include "qtcompat.h"
3838
#include "tnetstring.h"
3939
#include "rtimer.h"
40+
#include "defercall.h"
4041
#include "log.h"
4142
#include "logutil.h"
4243
#include "packet/httprequestdata.h"
@@ -1178,7 +1179,7 @@ class Subscription : public QObject
11781179
timer_->stop();
11791180
timer_->disconnect(this);
11801181
timer_->setParent(0);
1181-
timer_->deleteLater();
1182+
DeferCall::deleteLater(timer_);
11821183
}
11831184
}
11841185

@@ -1770,7 +1771,7 @@ class HandlerEngine::Private : public QObject
17701771
outHeaders += HttpHeader("Content-Type", "text/plain");
17711772

17721773
req->respond(code, reason, outHeaders, body.toUtf8());
1773-
req->finished.connect(boost::bind(&SimpleHttpRequest::deleteLater, req));
1774+
req->finished.connect([=] { DeferCall::deleteLater(req); });
17741775

17751776
QString msg = QString("control: %1 %2 code=%3 %4").arg(req->requestMethod(), QString::fromUtf8(req->requestUri()), QString::number(code), QString::number(body.size()));
17761777
if(items > -1)
@@ -3154,7 +3155,7 @@ private slots:
31543155
hs->subscribeCallback().remove(this);
31553156
hs->unsubscribeCallback().remove(this);
31563157
hs->finishedCallback().remove(this);
3157-
hs->deleteLater();
3158+
DeferCall::deleteLater(hs);
31583159

31593160
if(!rp.requests.isEmpty())
31603161
writeRetryPacket(addr, rp);

src/handler/httpsession.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
#include <QRandomGenerator>
3232
#include "qtcompat.h"
3333
#include "rtimer.h"
34+
#include "defercall.h"
3435
#include "log.h"
3536
#include "bufferlist.h"
3637
#include "packet/retryrequestpacket.h"
@@ -264,11 +265,11 @@ class HttpSession::Private : public QObject
264265

265266
timerConnection.disconnect();
266267
timer->setParent(0);
267-
timer->deleteLater();
268+
DeferCall::deleteLater(timer);
268269

269270
retryTimerConnection.disconnect();
270271
retryTimer->setParent(0);
271-
retryTimer->deleteLater();
272+
DeferCall::deleteLater(retryTimer);
272273
}
273274

274275
void start()

src/handler/httpsessionupdatemanager.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
#include <QTimer>
2626
#include <QUrl>
27+
#include "defercall.h"
2728
#include "httpsession.h"
2829

2930
class HttpSessionUpdateManager::Private : public QObject
@@ -61,7 +62,7 @@ class HttpSessionUpdateManager::Private : public QObject
6162

6263
bucket->timer->disconnect(this);
6364
bucket->timer->setParent(0);
64-
bucket->timer->deleteLater();
65+
DeferCall::deleteLater(bucket->timer);
6566
delete bucket;
6667
}
6768
}
@@ -76,7 +77,7 @@ class HttpSessionUpdateManager::Private : public QObject
7677

7778
bucket->timer->disconnect(this);
7879
bucket->timer->setParent(0);
79-
bucket->timer->deleteLater();
80+
DeferCall::deleteLater(bucket->timer);
8081
delete bucket;
8182
}
8283

src/handler/ratelimiter.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#include <QMap>
2727
#include <QPointer>
2828
#include <QTimer>
29+
#include "defercall.h"
2930

3031
#define MIN_BATCH_INTERVAL 25
3132

@@ -95,7 +96,7 @@ class RateLimiter::Private : public QObject
9596
{
9697
timer->disconnect(this);
9798
timer->setParent(0);
98-
timer->deleteLater();
99+
DeferCall::deleteLater(timer);
99100
}
100101

101102
void setRate(int actionsPerSecond)

src/handler/sequencer.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include <QDateTime>
2626
#include <QTimer>
2727
#include "log.h"
28+
#include "defercall.h"
2829
#include "publishitem.h"
2930
#include "publishlastids.h"
3031

@@ -88,7 +89,7 @@ class Sequencer::Private : public QObject
8889
{
8990
expireTimer->disconnect(this);
9091
expireTimer->setParent(0);
91-
expireTimer->deleteLater();
92+
DeferCall::deleteLater(expireTimer);
9293

9394
qDeleteAll(idCacheById);
9495
}

0 commit comments

Comments
 (0)