int smtp_client::detail::read_response(buffered_file& conn, string_ref& resp_r, posix_error_callback& ec) { ssize_t len = 0; char *line = 0; while (true) { len = conn.read_line_crlf(line, ec); if (len <= 0) { resp_r.reset(); break; } DBG_SMTP(std::cout << "R: " << std::string(line, len)); if (len <= 5 || line[3] == ' ') { resp_r.set(line, len); return response_code(line, len); } } return len; /* <= 0 (unexpected eof or error) */ }