1
0
Fork 0

do not memset StringBuffers

This commit is contained in:
jsteemann 2016-05-01 01:27:41 +02:00
parent cfc43ced78
commit c1ddb9074a
3 changed files with 13 additions and 13 deletions

View File

@ -395,6 +395,7 @@ bool HttpCommTask::processRead() {
auto buffer = std::make_unique<StringBuffer>(TRI_UNKNOWN_MEM_ZONE);
buffer->appendText(
TRI_CHAR_LENGTH_PAIR("HTTP/1.1 100 (Continue)\r\n\r\n"));
buffer->ensureNullTerminated();
_writeBuffers.push_back(buffer.get());
buffer.release();
@ -578,6 +579,7 @@ void HttpCommTask::sendChunk(StringBuffer* buffer) {
void HttpCommTask::finishedChunked() {
auto buffer = std::make_unique<StringBuffer>(TRI_UNKNOWN_MEM_ZONE, 6, true);
buffer->appendText(TRI_CHAR_LENGTH_PAIR("0\r\n\r\n"));
buffer->ensureNullTerminated();
_writeBuffers.push_back(buffer.get());
buffer.release();
@ -646,7 +648,7 @@ void HttpCommTask::addResponse(HttpResponse* response) {
// reserve a buffer with some spare capacity
auto buffer = std::make_unique<StringBuffer>(TRI_UNKNOWN_MEM_ZONE,
responseBodyLength + 128);
responseBodyLength + 128, false);
// write header
response->writeHeader(buffer.get());
@ -665,13 +667,15 @@ void HttpCommTask::addResponse(HttpResponse* response) {
}
}
buffer->ensureNullTerminated();
_writeBuffers.push_back(buffer.get());
auto b = buffer.release();
if (!b->empty()) {
LOG_TOPIC(TRACE, Logger::REQUESTS)
<< "\"http-request-response\",\"" << (void*)this << "\",\""
<< (StringUtils::escapeUnicode(std::string(b->c_str(), b->length())))
<< StringUtils::escapeUnicode(std::string(b->c_str(), b->length()))
<< "\"";
}

View File

@ -300,6 +300,7 @@ again:
}
} else {
_readBuffer->appendText(_tmpReadBuffer, nr);
_readBuffer->ensureNullTerminated();
// we might have more data to read
// if we do not iterate again, the reading process would stop

View File

@ -52,7 +52,7 @@ SocketTask::SocketTask(TRI_socket_t socket, double keepAliveTimeout)
_readBuffer(nullptr),
_clientClosed(false),
_tid(0) {
_readBuffer = new StringBuffer(TRI_UNKNOWN_MEM_ZONE);
_readBuffer = new StringBuffer(TRI_UNKNOWN_MEM_ZONE, false);
ConnectionStatisticsAgent::acquire();
connectionStatisticsAgentSetStart();
@ -94,7 +94,7 @@ void SocketTask::setKeepAliveTimeout(double timeout) {
bool SocketTask::fillReadBuffer() {
// reserve some memory for reading
if (_readBuffer->reserve(READ_BLOCK_SIZE) == TRI_ERROR_OUT_OF_MEMORY) {
if (_readBuffer->reserve(READ_BLOCK_SIZE + 1) == TRI_ERROR_OUT_OF_MEMORY) {
// out of memory
LOG(TRACE) << "out of memory";
@ -105,6 +105,7 @@ bool SocketTask::fillReadBuffer() {
if (nr > 0) {
_readBuffer->increaseLength(nr);
_readBuffer->ensureNullTerminated();
return true;
}
@ -184,12 +185,8 @@ bool SocketTask::handleWrite() {
}
if (len == 0) {
if (nullptr != _writeBuffer) {
delete _writeBuffer;
_writeBuffer = nullptr;
}
TRI_ASSERT(_writeBuffer == nullptr);
delete _writeBuffer;
_writeBuffer = nullptr;
completedWriteBuffer();
@ -235,9 +232,7 @@ void SocketTask::setWriteBuffer(StringBuffer* buffer,
completedWriteBuffer();
} else {
if (_writeBuffer != nullptr) {
delete _writeBuffer;
}
delete _writeBuffer;
_writeBuffer = buffer;
}