From 51ebca43f1a7afde6bb201265f293b1bdf9250de Mon Sep 17 00:00:00 2001 From: Thulinma Date: Thu, 4 Apr 2013 00:52:51 +0200 Subject: [PATCH] Buffer threading problem fixes. --- src/buffer/buffer.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/buffer/buffer.cpp b/src/buffer/buffer.cpp index d55f75a8..97a087f3 100644 --- a/src/buffer/buffer.cpp +++ b/src/buffer/buffer.cpp @@ -46,9 +46,10 @@ namespace Buffer { StatsSocket = Socket::Connection("/tmp/mist/statistics", true); } if (StatsSocket.connected()){ + Stream::get()->getReadLock(); StatsSocket.Send(Stream::get()->getStats()); - StatsSocket.Send(double_newline); - StatsSocket.flush(); + Stream::get()->dropReadLock(); + StatsSocket.SendNow(double_newline); } } StatsSocket.close(); @@ -62,10 +63,12 @@ namespace Buffer { std::cerr << "Thread launched for user " << usr->MyStr << ", socket number " << usr->S.getSocket() << std::endl; #endif + Stream::get()->getReadLock(); usr->myRing = thisStream->getRing(); if (thisStream->getStream()->metadata && thisStream->getHeader().size() > 0){ usr->S.SendNow(thisStream->getHeader()); } + Stream::get()->dropReadLock(); while (usr->S.connected()){ usleep(5000); //sleep 5ms