diff --git a/server/controlSession.cpp b/server/controlSession.cpp index ecc454fd..cabebea6 100644 --- a/server/controlSession.cpp +++ b/server/controlSession.cpp @@ -111,18 +111,32 @@ void ControlSession::reader() active_ = true; try { + std::stringstream message; while (active_) { asio::streambuf response; asio::read_until(*socket_, response, "\n"); - std::string s((istreambuf_iterator(&response)), istreambuf_iterator()); - size_t len = s.length() - 1; - if ((len >= 2) && s[len-2] == '\r') - --len; - s.resize(len); - if (messageReceiver_ != NULL) - messageReceiver_->onMessageReceived(this, s); + std::string s((istreambuf_iterator(&response)), istreambuf_iterator()); + 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) diff --git a/server/streamServer.cpp b/server/streamServer.cpp index dcdb5c7d..55d7950e 100644 --- a/server/streamServer.cpp +++ b/server/streamServer.cpp @@ -231,6 +231,7 @@ void StreamServer::onMessageReceived(ControlSession* controlSession, const std:: } catch (const JsonRequestException& e) { +// logE << "JsonRequestException: " << e.getResponse().dump() << ", message: " << message << "\n"; controlSession->send(e.getResponse().dump()); } catch (const exception& e)