MXS-2208 Add init/finish functions for mxb::http

Init/finish needed, as curl otherwise will leak memory.
This commit is contained in:
Johan Wikman
2018-12-17 16:58:47 +02:00
parent 0d733bb1bb
commit 3eca3ff7dc
3 changed files with 73 additions and 0 deletions

View File

@ -33,6 +33,14 @@ using std::vector;
namespace
{
static struct THIS_UNIT
{
int nInits;
} this_unit =
{
0
};
using namespace mxb;
using namespace mxb::http;
@ -421,6 +429,38 @@ namespace maxbase
namespace http
{
bool init()
{
bool rv = true;
if (this_unit.nInits == 0)
{
CURLcode code = curl_global_init(CURL_GLOBAL_ALL);
if (code == CURLE_OK)
{
this_unit.nInits = 1;
}
else
{
MXB_ERROR("Failed to initialize CURL library: %s", curl_easy_strerror(code));
rv = false;
}
}
return rv;
}
void finish()
{
mxb_assert(this_unit.nInits > 0);
if (--this_unit.nInits == 0)
{
curl_global_cleanup();
}
}
Async::Imp::~Imp()
{
}

View File

@ -160,6 +160,8 @@ int main()
long start;
long stop;
mxb::http::Init init;
start = time_since_epoch_ms();
rv += test_http();
stop = time_since_epoch_ms();