fixed rtp receiver deadlock on RTP packet receiver buffer overflow. clearing buffer on rtp stream initialization

git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@825 8eb893ce-cfd4-0310-b710-fb5ebe64c474
sayer/1.4-spce2.6
Stefan Sayer 19 years ago
parent 7ddab3d214
commit 42a02cb2bb

@ -101,7 +101,11 @@ void AmRtpReceiver::run()
if(it != streams.end()) {
AmRtpPacket* p = it->second->newPacket();
if (!p) {
WARN("RTP packet receive buffer full.\n");
WARN("RTP packet receive buffer full, dropping packet.\n");
// drop received data
AmRtpPacket dummy;
dummy.recv(tmp_fds[i].fd);
streams_mut.unlock();
continue;
}

@ -408,6 +408,7 @@ void AmRtpStream::pause()
void AmRtpStream::resume()
{
gettimeofday(&last_recv_time,NULL);
mem.clear();
}
void AmRtpStream::setOnHold(bool on_hold) {
@ -517,3 +518,8 @@ inline void PacketMem::freePacket(AmRtpPacket* p) {
used[p-packets] = false;
}
inline void PacketMem::clear() {
memset(used, 0, sizeof(used));
}

Loading…
Cancel
Save