mirror of https://gitee.com/bigwinds/arangodb
do not memset StringBuffers
This commit is contained in:
parent
cfc43ced78
commit
c1ddb9074a
|
@ -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()))
|
||||
<< "\"";
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue