Hello,
I'm using gstreamer (through gst-launch or totem) to play MMS streams. I discovered that after a quite long pause (about 1 minute or so), the stream cannot come to its end, it just plays until the buffering queue is empty.
I used the environnement variable LIBMMS_DEBUG to debug libmms, and saw error messages coming from the lib after I try to unpause the stream:
"mms: error reading packet header
mms: get_media_packet failed
mms: failed to send command 0x07"
After looking into libmms code, I saw that the "error reading packet header" was due to an io_read returning 0.
So I used netstat (netstat --tcp --numeric --programs) and could see that the socket for data exchange was in CLOSE_WAIT state, meaning the server closed its connection.
Do you think there is any keep-alive mechanism in the MMS protocol to prevent the server closing its connection?
I'm using libmms-0.6.2.
I used an MMS link pointing to video clips, so they are not live streams. I did not try live streams like radios.
Let me know if you need more informations about this.
Thanks a lot,
Christophe Dongieux.
Hi again,
I looked into MS-MMSP spec and there is a ping-pong mechanism to avoid timeouts and thus closed session by the server.
In the wireshark traces I made, I didn't see any LinkMacToViewerPing message, so I guess libmms could not know it had to send a LinkViewerToMacPong if it implemented it.
Sorry for the noise ;)
Christophe Dongieux.