From 5019bdcd5298541a191d9824b8e5c8aff9fdbca1 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@musicpd.org>
Date: Wed, 23 Jun 2021 20:46:50 +0200
Subject: [PATCH] TagAny: invoke ScanGenericTags() on remote files

This fixes reading ID3 tags on remote files with the commands
"readcomments" and "readpicture".

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1180
---
 NEWS           | 2 ++
 src/TagAny.cxx | 8 +++++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/NEWS b/NEWS
index f86f7d631..ef1a70797 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,8 @@
 ver 0.22.9 (not yet released)
 * database
   - simple: load all .mpdignore files of all parent directories
+* tags
+  - fix "readcomments" and "readpicture" on remote files with ID3 tags
 * decoder
   - ffmpeg: support the tags "sort_album", "album-sort", "artist-sort"
   - ffmpeg: fix build failure with FFmpeg 3.4
diff --git a/src/TagAny.cxx b/src/TagAny.cxx
index faa237b4c..6f875846e 100644
--- a/src/TagAny.cxx
+++ b/src/TagAny.cxx
@@ -25,6 +25,7 @@
 #include "client/Client.hxx"
 #include "protocol/Ack.hxx"
 #include "fs/AllocatedPath.hxx"
+#include "input/InputStream.hxx"
 #include "util/Compiler.h"
 #include "util/UriExtract.hxx"
 #include "LocateUri.hxx"
@@ -32,8 +33,13 @@
 static void
 TagScanStream(const char *uri, TagHandler &handler)
 {
-	if (!tag_stream_scan(uri, handler))
+	Mutex mutex;
+
+	auto is = InputStream::OpenReady(uri, mutex);
+	if (!tag_stream_scan(*is, handler))
 		throw ProtocolError(ACK_ERROR_NO_EXIST, "Failed to load file");
+
+	ScanGenericTags(*is, handler);
 }
 
 static void