diff options
Diffstat (limited to 'fbench')
-rw-r--r-- | fbench/src/httpclient/httpclient.cpp | 17 | ||||
-rw-r--r-- | fbench/src/httpclient/httpclient.h | 22 |
2 files changed, 18 insertions, 21 deletions
diff --git a/fbench/src/httpclient/httpclient.cpp b/fbench/src/httpclient/httpclient.cpp index 9615a6e6df7..9265905c9f6 100644 --- a/fbench/src/httpclient/httpclient.cpp +++ b/fbench/src/httpclient/httpclient.cpp @@ -37,7 +37,6 @@ HTTPClient::HTTPClient(vespalib::CryptoEngine::SP engine, const char *hostname, _buf(new char[_bufsize]), _bufused(0), _bufpos(0), - _headerinfo(), _isOpen(false), _httpVersion(0), _requestStatus(0), @@ -219,7 +218,7 @@ HTTPClient::SplitString(char *input, int &argc, char **argv, int maxargs) } bool -HTTPClient::ReadHTTPHeader() +HTTPClient::ReadHTTPHeader(std::string & headerinfo) { int lineLen; char line[4096]; @@ -268,8 +267,8 @@ HTTPClient::ReadHTTPHeader() } // Make sure to have enough memory in _headerinfo - _headerinfo += benchmark_data; - _headerinfo += "\n"; + headerinfo += benchmark_data; + headerinfo += "\n"; } SplitString(line, argc, argv, 32); @@ -354,7 +353,7 @@ HTTPClient::ReadChunkHeader() } bool -HTTPClient::Open(const char *url, bool usePost, const char *content, int cLen) +HTTPClient::Open(std::string & headerinfo, const char *url, bool usePost, const char *content, int cLen) { if (_isOpen) Close(); @@ -363,7 +362,7 @@ HTTPClient::Open(const char *url, bool usePost, const char *content, int cLen) _dataRead = 0; _dataDone = false; _isOpen = Connect(url, usePost, content, cLen); - if(!_isOpen || !ReadHTTPHeader()) { + if(!_isOpen || !ReadHTTPHeader(headerinfo)) { Close(); return false; } @@ -532,20 +531,20 @@ HTTPClient::Fetch(const char *url, std::ostream *file, ssize_t readRes = 0; ssize_t written = 0; - if (!Open(url, usePost, content, contentLen)) { + std::string headerinfo; + if (!Open(headerinfo, url, usePost, content, contentLen)) { return FetchStatus(false, _requestStatus, _totalHitCount, 0); } // Write headerinfo if (file) { - file->write(_headerinfo.c_str(), _headerinfo.length()); + file->write(headerinfo.c_str(), headerinfo.length()); if (file->fail()) { Close(); return FetchStatus(false, _requestStatus, _totalHitCount, 0); } file->write("\r\n", 2); // Reset header data. - _headerinfo = ""; } while((readRes = Read(buf, buflen)) > 0) { diff --git a/fbench/src/httpclient/httpclient.h b/fbench/src/httpclient/httpclient.h index cad01826db7..31a3881ec27 100644 --- a/fbench/src/httpclient/httpclient.h +++ b/fbench/src/httpclient/httpclient.h @@ -95,21 +95,20 @@ protected: vespalib::SocketAddress _address; vespalib::SyncCryptoSocket::UP _socket; - std::string _hostname; - int _port; - bool _keepAlive; - bool _headerBenchmarkdataCoverage; - std::string _extraHeaders; + const std::string _hostname; + int _port; + bool _keepAlive; + bool _headerBenchmarkdataCoverage; + const std::string _extraHeaders; vespalib::SocketSpec _sni_spec; - std::string _host_header_value; - uint64_t _reuseCount; + std::string _host_header_value; + uint64_t _reuseCount; size_t _bufsize; char *_buf; ssize_t _bufused; ssize_t _bufpos; - std::string _headerinfo; unsigned int _headerinfoPos; bool _isOpen; @@ -206,15 +205,14 @@ protected: * @param argv the argument array. * @param maxargs the size of 'argv'. **/ - static char *SplitString(char *input, int &argc, char **argv, - int maxargs); + static char *SplitString(char *input, int &argc, char **argv, int maxargs); /** * Read and parse the HTTP Header. * * @return success(true)/failure(fail) **/ - bool ReadHTTPHeader(); + bool ReadHTTPHeader(std::string & headerinfo); /** * Read and parse a chunk header. Only used with chunked encoding. @@ -266,7 +264,7 @@ public: * @param content if usePost is true, the content to post * @param cLen length of content in bytes **/ - bool Open(const char *url, bool usePost = false, const char *content = 0, int cLen = 0); + bool Open(std::string & headerinfo, const char *url, bool usePost = false, const char *content = 0, int cLen = 0); /** * Read data from the url we are currently connected to. This method |