From b2b28507081a97141fdc6c74fb2695a69f03615b Mon Sep 17 00:00:00 2001 From: Karl Heyes Date: Wed, 17 Nov 2004 20:35:35 +0000 Subject: [PATCH] prevent updated metadata being passed to listeners when the text hasn't actually changed svn path=/icecast/trunk/icecast/; revision=8214 --- src/format_mp3.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/format_mp3.c b/src/format_mp3.c index 24c5072e..4b0f7735 100644 --- a/src/format_mp3.c +++ b/src/format_mp3.c @@ -93,8 +93,11 @@ int format_mp3_get_plugin (source_t *source) plugin->_state = state; - meta = refbuf_new (1); - memcpy (meta->data, "", 1); + /* initial metadata needs to be blank for sending to clients and for + comparing with new metadata */ + meta = refbuf_new (2); + memcpy (meta->data, "\0\0", 2); + meta->len = 1; state->metadata = meta; state->interval = ICY_METADATA_INTERVAL; @@ -518,8 +521,9 @@ static refbuf_t *mp3_get_filter_meta (source_t *source) bytes -= metadata_remaining; memmove (src, src+metadata_remaining, bytes); - /* assign metadata if it's not 1 byte, as that indicates a change */ - if (source_mp3->build_metadata_len > 1) + /* assign metadata if it's greater than 1 byte, and the text has changed */ + if (source_mp3->build_metadata_len > 1 && + strcmp (source_mp3->build_metadata+1, source_mp3->metadata->data+1) != 0) { refbuf_t *meta = refbuf_new (source_mp3->build_metadata_len); memcpy (meta->data, source_mp3->build_metadata,