From 672e08c05fa3642b315fb0bb153c26354169fff7 Mon Sep 17 00:00:00 2001 From: eidheim Date: Mon, 25 Jun 2018 09:56:36 +0200 Subject: [PATCH] Language protocol: fixed header parsing when partial header was received --- src/source_language_protocol.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/source_language_protocol.cc b/src/source_language_protocol.cc index 8372b84..cf50607 100644 --- a/src/source_language_protocol.cc +++ b/src/source_language_protocol.cc @@ -134,6 +134,9 @@ void LanguageProtocol::Client::close(Source::LanguageProtocolView *view) { void LanguageProtocol::Client::parse_server_message() { if(!header_read) { + server_message_size=static_cast(-1); + auto header_pos=server_message_stream.tellg(); + std::string line; while(!header_read && std::getline(server_message_stream, line)) { if(!line.empty()) { @@ -146,12 +149,15 @@ void LanguageProtocol::Client::parse_server_message() { catch(...) {} } } - if(line.empty()) { + if(line.empty() && server_message_size!=static_cast(-1)) { server_message_content_pos=server_message_stream.tellg(); server_message_size+=server_message_content_pos; header_read=true; } } + + if(!header_read) + server_message_stream.seekg(header_pos, std::ios::beg); // Could not read header, start again at next output } if(header_read) {