summaryrefslogtreecommitdiff
path: root/src/command
diff options
context:
space:
mode:
authorMax Kellermann <max@musicpd.org>2019-01-21 22:16:46 +0100
committerMax Kellermann <max@musicpd.org>2019-01-21 22:16:46 +0100
commit05db6934eb12e859b99f34c4d96674aeaa1ff90a (patch)
tree2de14d328ddde1e52b6d85310835a3aa51f59866 /src/command
parent02c68c5cdb7611dbb821174e589c7df9660ea240 (diff)
FileCommands: fix deadlock in "albumart" command
Must lock the mutex before calling any of the unprotected InputStream methods. Closes #462
Diffstat (limited to 'src/command')
-rw-r--r--src/command/FileCommands.cxx7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/command/FileCommands.cxx b/src/command/FileCommands.cxx
index 863c7170e..c8af5c19b 100644
--- a/src/command/FileCommands.cxx
+++ b/src/command/FileCommands.cxx
@@ -285,8 +285,11 @@ read_stream_art(Response &r, const char *uri, size_t offset)
uint8_t buffer[CHUNK_SIZE];
size_t read_size;
- is->Seek(offset);
- read_size = is->Read(&buffer, CHUNK_SIZE);
+ {
+ const std::lock_guard<Mutex> protect(mutex);
+ is->Seek(offset);
+ read_size = is->Read(&buffer, CHUNK_SIZE);
+ }
r.Format("size: %" PRIoffset "\n"
"binary: %u\n",