I've been noticing some occasional issues with buffering audio files. It looks like gstreamer stalls out when it hits some memory threshold, which is understandable.
Problem is it stalls the download operation from the server, during that stalled time the TCP connection is allowed to timeout, when gstreamer attempts to fetch the remainder of the audio file the TCP session (server side) is closed and it errors out.
Here is the error which comes out of /var/log/messages when it happens. Its pretty easy to reproduce.
2010-04-22T06:29:08.787811Z  palm-webos-device user.err mediaserver: GSTREAMER: ERROR palmhttpsrc HttpSrc_Pull.cpp:1584:NetworkLoop:(NULL) Erroring out, but ConnectCode is 0 and ResponseCode is 200
2010-04-22T06:29:08.847930Z  palm-webos-device user.err mediaserver: GSTREAMER: ERROR palmmp3demux PalmMp3Demux.c:845:palm_mp3demux_loop:(NULL) fill returned failure -5
2010-04-22T06:29:09.130554Z  palm-webos-device user.warning mediaserver: PIPELINE: MediaPipeline::notifyCallComplete: called for listener 0x1c4258
Audio playback dies in conjunction with this error.
Perhaps detection of the closing socket or some keep alives while the buffer is stalled are in order.
I should add I am using 2 audio objects in a round robin configuration to provide gapless playback.