From 0cd788220d9e261d5bb540dab05cf58b55d94109 Mon Sep 17 00:00:00 2001 From: wn_ Date: Sun, 22 Jun 2025 16:31:50 +0000 Subject: Separate feed type detection from init, don't subscribe on failures. Also some FeedParser tweaks. --- classes/Feeds.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'classes/Feeds.php') diff --git a/classes/Feeds.php b/classes/Feeds.php index 1900b40f1..e76044060 100644 --- a/classes/Feeds.php +++ b/classes/Feeds.php @@ -999,7 +999,7 @@ class Feeds extends Handler_Protected { * Here you should call extractfeedurls in rpc-backend * to get all possible feeds. * 5 - Couldn't download the URL content. - * 6 - currently unused + * 6 - Feed parsing failure (invalid content) * 7 - Error while creating feed database entry. * 8 - Permission denied (ACCESS_LEVEL_READONLY). */ @@ -1059,6 +1059,11 @@ class Feeds extends Handler_Protected { $url = key($feedUrls); } + // Don't allow subscribing if the content is invalid + $fp = new FeedParser($contents); + if ($fp->error() || $fp->get_type() === FeedParser::FEED_UNKNOWN) + return ['code' => 6, 'message' => truncate_string(clean($contents), 250, '…')]; + $feed = ORM::for_table('ttrss_feeds') ->where('feed_url', $url) ->where('owner_uid', $_SESSION['uid']) -- cgit v1.2.3-54-g00ecf