mirror of
https://github.com/badaix/snapcast.git
synced 2025-05-20 20:46:16 +02:00
sometimes control messages were dropped
This commit is contained in:
parent
0dda78a919
commit
2e1ebc4153
2 changed files with 22 additions and 7 deletions
|
@ -111,18 +111,32 @@ void ControlSession::reader()
|
||||||
active_ = true;
|
active_ = true;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
std::stringstream message;
|
||||||
while (active_)
|
while (active_)
|
||||||
{
|
{
|
||||||
asio::streambuf response;
|
asio::streambuf response;
|
||||||
asio::read_until(*socket_, response, "\n");
|
asio::read_until(*socket_, response, "\n");
|
||||||
std::string s((istreambuf_iterator<char>(&response)), istreambuf_iterator<char>());
|
|
||||||
size_t len = s.length() - 1;
|
|
||||||
if ((len >= 2) && s[len-2] == '\r')
|
|
||||||
--len;
|
|
||||||
s.resize(len);
|
|
||||||
|
|
||||||
if (messageReceiver_ != NULL)
|
std::string s((istreambuf_iterator<char>(&response)), istreambuf_iterator<char>());
|
||||||
messageReceiver_->onMessageReceived(this, s);
|
message << s;
|
||||||
|
if (s.empty() || (s.back() != '\n'))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
string line;
|
||||||
|
while (std::getline(message, line, '\n'))
|
||||||
|
{
|
||||||
|
if (line.empty())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
size_t len = line.length() - 1;
|
||||||
|
if ((len >= 2) && line[len-2] == '\r')
|
||||||
|
--len;
|
||||||
|
line.resize(len);
|
||||||
|
if ((messageReceiver_ != NULL) && !line.empty())
|
||||||
|
messageReceiver_->onMessageReceived(this, line);
|
||||||
|
}
|
||||||
|
message.str("");
|
||||||
|
message.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (const std::exception& e)
|
catch (const std::exception& e)
|
||||||
|
|
|
@ -231,6 +231,7 @@ void StreamServer::onMessageReceived(ControlSession* controlSession, const std::
|
||||||
}
|
}
|
||||||
catch (const JsonRequestException& e)
|
catch (const JsonRequestException& e)
|
||||||
{
|
{
|
||||||
|
// logE << "JsonRequestException: " << e.getResponse().dump() << ", message: " << message << "\n";
|
||||||
controlSession->send(e.getResponse().dump());
|
controlSession->send(e.getResponse().dump());
|
||||||
}
|
}
|
||||||
catch (const exception& e)
|
catch (const exception& e)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue