In fact, after further investigation, the client receives data, but it seams those data are lacking an end of stream or end of packet tag. Trying to be clearer, here is an extract of the algorithm, with in UPPERCASE the value of the conditions. while (eos == 0) { while (eos == 0) { int result = oy.pageout(og); if (result == 0) SOMETIMES FALSE break; // need more data if (result == -1) { // missing or corrupt data at this page position } else { os.pagein(og); while (true) { result = os.packetout(op); if (result == 0)ALWAYS TRUE break; // need more data if (result == -1) { // missing or corrupt data at this page position // no reason to complain; already complained above } else { // we have a packet. Decode it NEVER REACHES THIS POINT } } if (og.eos() != 0) ALWAYS FALSE eos = 1; } } if (eos == 0) { index = oy.buffer(BUFSIZE); buffer = oy.data; bytes = readStream(buffer,index,BUFSIZE); if (bytes == -1) { break; } oy.wrote(bytes); if (bytes == 0) ALWAYS FALSE eos = 1; } } Regards, Chris Iceuse - Kris wrote:> Hello, > > I found a fallback trouble on icecast 2.1kh4 (but it's the same with > 2.0 I think) : > > - ices streams live.ogg to icecast > - icecast has a fallback live-default.ogg for live.ogg > > - a listener A listen at live.ogg > - I shut down the source > - the listener A is trying to read data from its connection, but > receives nothing. Sometimes, it gets fallback data, sometimes > nothing... (source timeout=10 sec, client timeout=10sec) > - any new listener B coming after live.ogg shutdown get the content of > the fallback (thats good) > > - a new listener B connects to live.ogg and is hearing the fallback > - I restart the source > - live.ogg reconnects > - the listener B listening at live.ogg (the fallback in fact) get no > data on reading data from its connection (any try to read data returns > zero bytes) > - the listener A is still the same problem... > > It occurs with a java player (easy to debug and see whats happening) > and also with VLC. > Sometimes, listener get the fallback data when source dies (more often > it gets nothing) > > I will change my java client to reconnect if it gets no data after > trying a few times to read. I think something can be done on icecast > side... > > Regards, > Chris
Hello, I found a fallback trouble on icecast 2.1kh4 (but it's the same with 2.0 I think) : - ices streams live.ogg to icecast - icecast has a fallback live-default.ogg for live.ogg - a listener A listen at live.ogg - I shut down the source - the listener A is trying to read data from its connection, but receives nothing. Sometimes, it gets fallback data, sometimes nothing... (source timeout=10 sec, client timeout=10sec) - any new listener B coming after live.ogg shutdown get the content of the fallback (thats good) - a new listener B connects to live.ogg and is hearing the fallback - I restart the source - live.ogg reconnects - the listener B listening at live.ogg (the fallback in fact) get no data on reading data from its connection (any try to read data returns zero bytes) - the listener A is still the same problem... It occurs with a java player (easy to debug and see whats happening) and also with VLC. Sometimes, listener get the fallback data when source dies (more often it gets nothing) I will change my java client to reconnect if it gets no data after trying a few times to read. I think something can be done on icecast side... Regards, Chris See icecast traces :******************** source dying: 81.56.217.47 - - [15/Dec/2004:23:56:26 +0100] "SOURCE /live.ogg HTTP/1.0" 200 19 "-" "IceS 2.0-kh59" 164 [2004-12-15 23:56:07] DBUG stats/modify_node_event update node client_connections (25) [2004-12-15 23:56:07] DBUG stats/modify_node_event update node clients (4) [2004-12-15 23:56:07] DBUG source/process_pending_clients Adding 1 client(s) [2004-12-15 23:56:07] DBUG format/format_http_write_to_client processing pending client headers [2004-12-15 23:56:07] DBUG stats/modify_node_event update node listeners (4) [2004-12-15 23:56:26] INFO format-ogg/ogg_get_buffer End of Stream /live.ogg [2004-12-15 23:56:26] INFO source/source_shutdown Source "/live.ogg" exiting [2004-12-15 23:56:26] INFO source/source_move_clients passing 4 listeners to "/live-default.ogg" [2004-12-15 23:56:26] DBUG source/source_clear_source clearing source "/live.ogg" [2004-12-15 23:56:26] DBUG format-ogg/format_ogg_free_headers releasing header pages [2004-12-15 23:56:26] DBUG format-ogg/free_ogg_codecs freeing codecs [2004-12-15 23:56:26] DBUG format-vorbis/vorbis_codec_free freeing vorbis codec [2004-12-15 23:56:26] DBUG source/source_free_source freeing source "/live.ogg" [2004-12-15 23:56:26] DBUG slave/_slave_thread rescanning relay lists [2004-12-15 23:56:26] DBUG source/process_pending_clients Adding 4 client(s) [2004-12-15 23:56:26] DBUG stats/modify_node_event update node listeners (0) [2004-12-15 23:56:26] DBUG stats/modify_node_event update node sources (3) [2004-12-15 23:56:26] DBUG stats/process_source_event delete source node /live.ogg [2004-12-15 23:56:26] DBUG stats/process_source_event new source stat /live.ogg [2004-12-15 23:56:26] DBUG stats/process_source_event new node listeners (0) [2004-12-15 23:56:26] DBUG stats/process_source_event new node max_listeners (1000) [2004-12-15 23:56:26] DBUG stats/modify_node_event update node listeners (4) [2004-12-15 23:56:28] DBUG format-vorbis/initiate_flush adding EOS packet [2004-12-15 23:56:28] DBUG format-vorbis/get_buffer_finished flushing page [2004-12-15 23:56:28] DBUG format-ogg/format_ogg_free_headers releasing header pages [2004-12-15 23:56:28] DBUG format-vorbis/process_vorbis_headers Adding the 3 header packets [2004-12-15 23:56:28] DBUG format-ogg/format_ogg_attach_header attaching BOS page [2004-12-15 23:56:28] DBUG format-ogg/format_ogg_attach_header attaching header page [2004-12-15 23:56:28] DBUG format-ogg/format_ogg_free_headers releasing header pages [2004-12-15 23:56:28] DBUG format-ogg/free_ogg_codecs freeing codecs [2004-12-15 23:56:28] DBUG format-vorbis/vorbis_codec_free freeing vorbis codec [2004-12-15 23:56:28] DBUG format-vorbis/initial_vorbis_page checking for vorbis codec [2004-12-15 23:56:28] INFO format-vorbis/initial_vorbis_page seen initial vorbis header [2004-12-15 23:56:28] DBUG format-vorbis/process_vorbis_page processing incoming header packet (1) [2004-12-15 23:56:28] DBUG format-vorbis/process_vorbis_page processing incoming header packet (2) [2004-12-15 23:56:28] DBUG format-vorbis/process_vorbis_page we have the header packets now [2004-12-15 23:56:28] DBUG format-vorbis/process_vorbis_headers Adding the 3 header packets [2004-12-15 23:56:28] DBUG format-ogg/format_ogg_attach_header attaching BOS page [2004-12-15 23:56:28] DBUG format-ogg/format_ogg_attach_header attaching header page [2004-12-15 23:56:28] DBUG stats/process_source_event delete node audio-bitrate [2004-12-15 23:56:28] DBUG stats/process_source_event delete node audio-channels [2004-12-15 23:56:28] DBUG stats/process_source_event delete node audio-samplerate [2004-12-15 23:56:28] DBUG stats/process_source_event new node audio-samplerate (11025) [2004-12-15 23:56:28] DBUG stats/process_source_event new node audio-channels (1) [2004-12-15 23:56:28] DBUG stats/process_source_event new node audio-bitrate (16000) [2004-12-15 23:56:28] DBUG stats/modify_node_event update node ice-bitrate (16) [2004-12-15 23:57:48] INFO connection/_handle_source_request Source logging in at mountpoint "/live.ogg" [2004-12-15 23:57:48] DBUG connection/connection_complete_source sources count is 3 [2004-12-15 23:57:48] DBUG source/source_apply_mount Applying mount information for "/live.ogg" [2004-12-15 23:57:48] DBUG source/source_update_settings fallback /live-default.ogg [2004-12-15 23:57:48] DBUG source/source_update_settings preventing YP listings [2004-12-15 23:57:48] DBUG source/source_update_settings max listeners to 1000 [2004-12-15 23:57:48] DBUG source/source_update_settings queue size to 102400 [2004-12-15 23:57:48] DBUG source/source_update_settings burst size to 65536 [2004-12-15 23:57:48] DBUG source/source_update_settings source timeout to 10 [2004-12-15 23:57:48] DBUG source/source_update_settings fallback_when_full to 0 [2004-12-15 23:57:48] DBUG connection/connection_complete_source source is ready to start [2004-12-15 23:57:48] DBUG source/source_init Source creation complete [2004-12-15 23:57:48] INFO source/source_move_clients passing 4 listeners to "/live.ogg" [2004-12-15 23:57:48] DBUG stats/modify_node_event update node connections (34) [2004-12-15 23:57:48] DBUG stats/modify_node_event update node max_listeners (1000) [2004-12-15 23:57:48] DBUG stats/modify_node_event update node source_client_connections (9) [2004-12-15 23:57:48] DBUG stats/modify_node_event update node listeners (0) [2004-12-15 23:57:48] DBUG stats/process_source_event new node public (0) [2004-12-15 23:57:48] DBUG stats/process_source_event new node genre (Radio Kreiz Breizh) [2004-12-15 23:57:48] DBUG stats/process_source_event new node server_description (Radio Kreiz Breizh war eeun) [2004-12-15 23:57:48] DBUG stats/process_source_event new node server_name (Radio Kreiz Breizh) [2004-12-15 23:57:48] DBUG stats/modify_node_event update node sources (4) [2004-12-15 23:57:48] DBUG stats/modify_node_event update node source_total_connections (9) [2004-12-15 23:57:48] DBUG stats/process_source_event new node bitrate (29) [2004-12-15 23:57:48] DBUG stats/process_source_event new node samplerate (21000) [2004-12-15 23:57:48] DBUG stats/process_source_event new node channels (1) [2004-12-15 23:57:48] DBUG stats/process_source_event new node audio_info (bitrate=29;samplerate=21000;channels=1) [2004-12-15 23:57:48] DBUG stats/modify_node_event update node listeners (0) [2004-12-15 23:57:48] DBUG source/process_pending_clients Adding 4 client(s) [2004-12-15 23:57:48] DBUG format-vorbis/initial_vorbis_page checking for vorbis codec [2004-12-15 23:57:48] INFO format-vorbis/initial_vorbis_page seen initial vorbis header [2004-12-15 23:57:48] DBUG stats/modify_node_event update node listeners (4) [2004-12-15 23:57:48] DBUG slave/_slave_thread rescanning relay lists [2004-12-15 23:57:49] DBUG format-vorbis/process_vorbis_page processing incoming header packet (1) [2004-12-15 23:57:49] DBUG format-vorbis/process_vorbis_page processing incoming header packet (2) [2004-12-15 23:57:49] DBUG format-vorbis/process_vorbis_page we have the header packets now [2004-12-15 23:57:49] DBUG format-vorbis/process_vorbis_headers Adding the 3 header packets [2004-12-15 23:57:49] DBUG format-ogg/format_ogg_attach_header attaching BOS page [2004-12-15 23:57:49] DBUG format-ogg/format_ogg_attach_header attaching header page [2004-12-15 23:57:49] DBUG stats/process_source_event new node audio-samplerate (21000) [2004-12-15 23:57:49] DBUG stats/process_source_event new node audio-channels (1) [2004-12-15 23:57:49] DBUG stats/process_source_event new node audio-bitrate (29955) [2004-12-15 23:57:49] DBUG stats/process_source_event new node ice-bitrate (29) [2004-12-15 23:57:51] DBUG format-vorbis/initiate_flush adding EOS packet [2004-12-15 23:57:51] DBUG format-vorbis/get_buffer_finished flushing page [2004-12-15 23:57:51] DBUG format-ogg/format_ogg_free_headers releasing header pages [2004-12-15 23:57:51] DBUG format-vorbis/process_vorbis_headers Adding the 3 header packets [2004-12-15 23:57:51] DBUG format-ogg/format_ogg_attach_header attaching BOS page [2004-12-15 23:57:51] DBUG format-ogg/format_ogg_attach_header attaching header page [2004-12-15 23:57:51] DBUG format-ogg/format_ogg_free_headers releasing header pages [2004-12-15 23:57:51] DBUG format-ogg/free_ogg_codecs freeing codecs [2004-12-15 23:57:51] DBUG format-vorbis/vorbis_codec_free freeing vorbis codec [2004-12-15 23:57:51] DBUG format-vorbis/initial_vorbis_page checking for vorbis codec [2004-12-15 23:57:51] INFO format-vorbis/initial_vorbis_page seen initial vorbis header [2004-12-15 23:57:51] DBUG format-vorbis/process_vorbis_page processing incoming header packet (1) [2004-12-15 23:57:51] DBUG format-vorbis/process_vorbis_page processing incoming header packet (2) [2004-12-15 23:57:51] DBUG format-vorbis/process_vorbis_page we have the header packets now [2004-12-15 23:57:51] DBUG format-vorbis/process_vorbis_headers Adding the 3 header packets [2004-12-15 23:57:51] DBUG format-ogg/format_ogg_attach_header attaching BOS page [2004-12-15 23:57:51] DBUG format-ogg/format_ogg_attach_header attaching header page [2004-12-15 23:57:52] DBUG stats/process_source_event delete node audio-bitrate [2004-12-15 23:57:52] DBUG stats/process_source_event delete node audio-channels [2004-12-15 23:57:52] DBUG stats/process_source_event delete node audio-samplerate [2004-12-15 23:57:52] DBUG stats/process_source_event new node audio-samplerate (11025) [2004-12-15 23:57:52] DBUG stats/process_source_event new node audio-channels (1) [2004-12-15 23:57:52] DBUG stats/process_source_event new node audio-bitrate (16000) [2004-12-15 23:57:52] DBUG stats/modify_node_event update node ice-bitrate (16) [2004-12-15 23:57:52] DBUG slave/_slave_thread checking master stream list [2004-12-15 23:59:54] DBUG slave/_slave_thread checking master stream list [2004-12-16 00:00:27] DBUG format-vorbis/initiate_flush adding EOS packet [2004-12-16 00:00:27] DBUG format-vorbis/get_buffer_finished flushing page [2004-12-16 00:00:27] DBUG format-ogg/format_ogg_free_headers releasing header pages [2004-12-16 00:00:27] DBUG format-vorbis/process_vorbis_headers Adding the 3 header packets [2004-12-16 00:00:27] DBUG format-ogg/format_ogg_attach_header attaching BOS page [2004-12-16 00:00:27] DBUG format-ogg/format_ogg_attach_header attaching header page [2004-12-16 00:00:27] DBUG format-ogg/format_ogg_free_headers releasing header pages [2004-12-16 00:00:27] DBUG format-ogg/free_ogg_codecs freeing codecs [2004-12-16 00:00:27] DBUG format-vorbis/vorbis_codec_free freeing vorbis codec [2004-12-16 00:00:27] DBUG format-vorbis/initial_vorbis_page checking for vorbis codec [2004-12-16 00:00:27] INFO format-vorbis/initial_vorbis_page seen initial vorbis header [2004-12-16 00:00:27] DBUG format-vorbis/process_vorbis_page processing incoming header packet (1) [2004-12-16 00:00:27] DBUG format-vorbis/process_vorbis_page processing incoming header packet (2) [2004-12-16 00:00:27] DBUG format-vorbis/process_vorbis_page we have the header packets now [2004-12-16 00:00:27] DBUG format-vorbis/process_vorbis_headers Adding the 3 header packets [2004-12-16 00:00:27] DBUG format-ogg/format_ogg_attach_header attaching BOS page [2004-12-16 00:00:27] DBUG format-ogg/format_ogg_attach_header attaching header page [2004-12-16 00:00:28] DBUG stats/process_source_event delete node audio-bitrate [2004-12-16 00:00:28] DBUG stats/process_source_event delete node audio-channels [2004-12-16 00:00:28] DBUG stats/process_source_event delete node audio-samplerate [2004-12-16 00:00:28] DBUG stats/process_source_event new node audio-samplerate (19404) [2004-12-16 00:00:28] DBUG stats/process_source_event new node audio-channels (1) [2004-12-16 00:00:28] DBUG stats/process_source_event new node audio-bitrate (26400) [2004-12-16 00:00:28] DBUG stats/modify_node_event update node ice-bitrate (26)
On Wed, 2004-12-15 at 23:29, Iceuse - Kris wrote:> In fact, after further investigation, the client receives data, but it > seams those data are lacking an end of stream or end of packet tag.The ogg handler up to recently in trunk never rebuilt the streams, so the listener received what came in to icecast, with the kh branch you had to use the --enable-vorbis-updates to get the module that rebuilt the stream (for smaller page sizes and url updates). That configure option for the kh branch is not in now, the stream is rebuilt for vorbis only streams and is disabled for multiple logical streams (eg with theora). That module is also in th 2.2 codebase. The eos flag should be set when rebuilding streams, but by all means let me know the specifics that led to it being missing, for the most part though, listening clients don't have a problem with a missing eos BTW 2.1-kh5 is out now. karl.