From e45e202c5eaf678092fd3d1953dda44dda7e2e46 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Sun, 5 Sep 2021 21:47:00 +0200 Subject: [PATCH] Subsonic: Make network replies timeout after 30 seconds Fixes #754 --- src/subsonic/subsonicrequest.cpp | 5 +++++ src/subsonic/subsonicrequest.h | 2 ++ 2 files changed, 7 insertions(+) diff --git a/src/subsonic/subsonicrequest.cpp b/src/subsonic/subsonicrequest.cpp index 15335dc1a..dabe3505c 100644 --- a/src/subsonic/subsonicrequest.cpp +++ b/src/subsonic/subsonicrequest.cpp @@ -47,6 +47,7 @@ #include "core/song.h" #include "core/timeconstants.h" #include "core/imageutils.h" +#include "core/networktimeouts.h" #include "covermanager/albumcoverloader.h" #include "subsonicservice.h" #include "subsonicurlhandler.h" @@ -63,6 +64,7 @@ SubsonicRequest::SubsonicRequest(SubsonicService *service, SubsonicUrlHandler *u url_handler_(url_handler), app_(app), network_(new QNetworkAccessManager), + timeouts_(new NetworkTimeouts(30000, this)), finished_(false), albums_requests_active_(0), album_songs_requests_active_(0), @@ -155,6 +157,7 @@ void SubsonicRequest::FlushAlbumsRequests() { QNetworkReply *reply = CreateGetRequest(QString("getAlbumList2"), params); replies_ << reply; QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, request]() { AlbumsReplyReceived(reply, request.offset, request.size); }); + timeouts_->AddReply(reply); } @@ -347,6 +350,7 @@ void SubsonicRequest::FlushAlbumSongsRequests() { QNetworkReply *reply = CreateGetRequest(QString("getAlbum"), params); replies_ << reply; QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, request]() { AlbumSongsReplyReceived(reply, request.artist_id, request.album_id, request.album_artist); }); + timeouts_->AddReply(reply); } @@ -748,6 +752,7 @@ void SubsonicRequest::FlushAlbumCoverRequests() { QNetworkReply *reply = network_->get(req); album_cover_replies_ << reply; QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, request]() { AlbumCoverReceived(reply, request.url, request.filename); }); + timeouts_->AddReply(reply); } diff --git a/src/subsonic/subsonicrequest.h b/src/subsonic/subsonicrequest.h index 87c0faaf9..c9bc345ff 100644 --- a/src/subsonic/subsonicrequest.h +++ b/src/subsonic/subsonicrequest.h @@ -47,6 +47,7 @@ class QNetworkReply; class Application; class SubsonicService; class SubsonicUrlHandler; +class NetworkTimeouts; class SubsonicRequest : public SubsonicBaseRequest { Q_OBJECT @@ -118,6 +119,7 @@ class SubsonicRequest : public SubsonicBaseRequest { SubsonicUrlHandler *url_handler_; Application *app_; std::unique_ptr network_; + NetworkTimeouts *timeouts_; bool finished_;