diff --git a/NEWS b/NEWS
index 7cc085e57..25ce5110c 100644
--- a/NEWS
+++ b/NEWS
@@ -20,6 +20,7 @@ ver 0.16 (20??/??/??)
   - id3: revised "performer" tag support
 * decoders:
   - don't try a plugin twice (MIME type & suffix)
+  - don't fall back to "mad" unless no plugin matches
   - ffmpeg: support multiple tags
   - ffmpeg: convert metadata to generic format
   - sndfile: new decoder plugin based on libsndfile
diff --git a/src/decoder_thread.c b/src/decoder_thread.c
index 631a7a0e3..42a537ffe 100644
--- a/src/decoder_thread.c
+++ b/src/decoder_thread.c
@@ -282,7 +282,8 @@ decoder_run_stream(struct decoder *decoder, const char *uri)
 					  &tried) ||
 		/* fallback to mp3: this is needed for bastard streams
 		   that don't have a suffix or set the mimeType */
-		decoder_run_stream_fallback(decoder, input_stream);
+		(tried == NULL &&
+		 decoder_run_stream_fallback(decoder, input_stream));
 
 	g_slist_free(tried);