diff --git a/src/base/bittorrent/torrenthandle.cpp b/src/base/bittorrent/torrenthandle.cpp index 7fa4015e9..4960a94d0 100644 --- a/src/base/bittorrent/torrenthandle.cpp +++ b/src/base/bittorrent/torrenthandle.cpp @@ -1214,10 +1214,8 @@ bool TorrentHandle::setCategory(const QString &category) { if (m_category != category) { if (!category.isEmpty()) { - if (!Session::isValidCategoryName(category)) return false; - if (!m_session->categories().contains(category)) - if (!m_session->addCategory(category)) - return false; + if (!Session::isValidCategoryName(category) || !m_session->categories().contains(category)) + return false; } QString oldCategory = m_category; diff --git a/src/webui/api/torrentscontroller.cpp b/src/webui/api/torrentscontroller.cpp index cdb5fd004..9eb3d1b65 100644 --- a/src/webui/api/torrentscontroller.cpp +++ b/src/webui/api/torrentscontroller.cpp @@ -811,6 +811,10 @@ void TorrentsController::setCategoryAction() const QString category {params()["category"].trimmed()}; applyToTorrents(hashes, [category](BitTorrent::TorrentHandle *torrent) { + auto *session = BitTorrent::Session::instance(); + const QStringList categories = session->categories().keys(); + if (!categories.contains(category) && !session->addCategory(category)) + throw APIError(APIErrorType::Conflict, tr("Unable to create category")); if (!torrent->setCategory(category)) throw APIError(APIErrorType::Conflict, tr("Incorrect category name")); });