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) {