bool HttpSocketClient::read(HttpResponse& httpResponse) { httpResponse.clear(); char* buffer = new char[_bufferSize + 1]; int result; while (httpResponse.getParseStatus() != Http::PARSE_STATUS::PARSE_END) { result = Socket::read(buffer, _bufferSize, 0); buffer[result] = '\0'; if (result == SOCKET_ERROR) { close(); return false; } else if (result > 0) { if (!httpResponse.parseNewDate(buffer))return false; } else if (result == 0) { if (httpResponse.getParseStatus() != Http::PARSE_STATUS::PARSE_END) { httpResponse.endTransfer(); httpResponse.parse(); } break; } memset(buffer, 0, sizeof (char)*_bufferSize); } return true; }