Example #1
0
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) */
}