Delete remaining network replies and local redirct server in destructor
This commit is contained in:
@@ -57,6 +57,12 @@ AcoustidClient::AcoustidClient(QObject *parent)
|
||||
network_(new NetworkAccessManager(this)),
|
||||
timeouts_(new NetworkTimeouts(kDefaultTimeout, this)) {}
|
||||
|
||||
AcoustidClient::~AcoustidClient() {
|
||||
|
||||
CancelAll();
|
||||
|
||||
}
|
||||
|
||||
void AcoustidClient::SetTimeout(const int msec) { timeouts_->SetTimeout(msec); }
|
||||
|
||||
void AcoustidClient::Start(const int id, const QString &fingerprint, int duration_msec) {
|
||||
@@ -82,10 +88,13 @@ void AcoustidClient::Start(const int id, const QString &fingerprint, int duratio
|
||||
requests_[id] = reply;
|
||||
|
||||
timeouts_->AddReply(reply);
|
||||
|
||||
}
|
||||
|
||||
void AcoustidClient::Cancel(const int id) {
|
||||
|
||||
if (requests_.contains(id)) delete requests_.take(id);
|
||||
|
||||
}
|
||||
|
||||
void AcoustidClient::CancelAll() {
|
||||
@@ -113,6 +122,7 @@ struct IdSource {
|
||||
|
||||
void AcoustidClient::RequestFinished(QNetworkReply *reply, const int request_id) {
|
||||
|
||||
disconnect(reply, nullptr, this, nullptr);
|
||||
reply->deleteLater();
|
||||
requests_.remove(request_id);
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@ class AcoustidClient : public QObject {
|
||||
|
||||
public:
|
||||
explicit AcoustidClient(QObject *parent = nullptr);
|
||||
~AcoustidClient();
|
||||
|
||||
// Network requests will be aborted after this interval.
|
||||
void SetTimeout(const int msec);
|
||||
@@ -70,6 +71,7 @@ class AcoustidClient : public QObject {
|
||||
QNetworkAccessManager *network_;
|
||||
NetworkTimeouts *timeouts_;
|
||||
QMap<int, QNetworkReply*> requests_;
|
||||
|
||||
};
|
||||
|
||||
#endif // ACOUSTIDCLIENT_H
|
||||
|
||||
@@ -69,6 +69,12 @@ MusicBrainzClient::MusicBrainzClient(QObject *parent, QNetworkAccessManager *net
|
||||
|
||||
}
|
||||
|
||||
MusicBrainzClient::~MusicBrainzClient() {
|
||||
|
||||
CancelAll();
|
||||
|
||||
}
|
||||
|
||||
QByteArray MusicBrainzClient::GetReplyData(QNetworkReply *reply, QString &error) {
|
||||
|
||||
QByteArray data;
|
||||
@@ -114,7 +120,7 @@ void MusicBrainzClient::Cancel(int id) {
|
||||
|
||||
while (!requests_.isEmpty() && requests_.contains(id)) {
|
||||
QNetworkReply *reply = requests_.take(id);
|
||||
disconnect(reply, 0, this, 0);
|
||||
disconnect(reply, nullptr, this, nullptr);
|
||||
if (reply->isRunning()) reply->abort();
|
||||
reply->deleteLater();
|
||||
}
|
||||
@@ -187,6 +193,7 @@ void MusicBrainzClient::FlushRequests() {
|
||||
|
||||
void MusicBrainzClient::RequestFinished(QNetworkReply *reply, const int id, const int request_number) {
|
||||
|
||||
disconnect(reply, nullptr, this, nullptr);
|
||||
reply->deleteLater();
|
||||
|
||||
const int nb_removed = requests_.remove(id, reply);
|
||||
@@ -232,6 +239,7 @@ void MusicBrainzClient::RequestFinished(QNetworkReply *reply, const int id, cons
|
||||
|
||||
void MusicBrainzClient::DiscIdRequestFinished(const QString &discid, QNetworkReply *reply) {
|
||||
|
||||
disconnect(reply, nullptr, this, nullptr);
|
||||
reply->deleteLater();
|
||||
|
||||
ResultList ret;
|
||||
|
||||
@@ -51,6 +51,7 @@ class MusicBrainzClient : public QObject {
|
||||
// The second argument allows for specifying a custom network access manager.
|
||||
// It is used in tests. The ownership of network is not transferred.
|
||||
explicit MusicBrainzClient(QObject *parent = nullptr, QNetworkAccessManager *network = nullptr);
|
||||
~MusicBrainzClient();
|
||||
|
||||
struct Result {
|
||||
Result() : duration_msec_(0), track_(0), year_(-1) {}
|
||||
|
||||
Reference in New Issue
Block a user