Fix HTTPClient reset() behaviour
Ensure all data members are correctly re-initialzied when doing a reset. This shoed up as negative ‘bytes downloaded’ counts after a TerraSync abandon and retry.
This commit is contained in:
parent
059285ed6f
commit
be49f880b8
@ -81,21 +81,8 @@ void Client::ClientPrivate::createCurlMulti() {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
Client::Client() :
|
Client::Client()
|
||||||
d(new ClientPrivate)
|
|
||||||
{
|
{
|
||||||
d->proxyPort = 0;
|
|
||||||
d->maxConnections = 4;
|
|
||||||
d->maxHostConnections = 4;
|
|
||||||
d->bytesTransferred = 0;
|
|
||||||
d->lastTransferRate = 0;
|
|
||||||
d->timeTransferSample.stamp();
|
|
||||||
d->totalBytesDownloaded = 0;
|
|
||||||
d->maxPipelineDepth = 5;
|
|
||||||
setUserAgent("SimGear-" SG_STRINGIZE(SIMGEAR_VERSION));
|
|
||||||
|
|
||||||
d->tlsCertificatePath = SGPath::fromEnv("SIMGEAR_TLS_CERT_PATH");
|
|
||||||
|
|
||||||
static bool didInitCurlGlobal = false;
|
static bool didInitCurlGlobal = false;
|
||||||
static std::mutex initMutex;
|
static std::mutex initMutex;
|
||||||
|
|
||||||
@ -105,7 +92,7 @@ Client::Client() :
|
|||||||
didInitCurlGlobal = true;
|
didInitCurlGlobal = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
d->createCurlMulti();
|
reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
Client::~Client()
|
Client::~Client()
|
||||||
@ -139,8 +126,21 @@ void Client::setMaxPipelineDepth(unsigned int depth)
|
|||||||
|
|
||||||
void Client::reset()
|
void Client::reset()
|
||||||
{
|
{
|
||||||
curl_multi_cleanup(d->curlMulti);
|
if (d.get()) {
|
||||||
|
curl_multi_cleanup(d->curlMulti);
|
||||||
|
}
|
||||||
|
|
||||||
d.reset(new ClientPrivate);
|
d.reset(new ClientPrivate);
|
||||||
|
|
||||||
|
d->proxyPort = 0;
|
||||||
|
d->maxConnections = 4;
|
||||||
|
d->maxHostConnections = 4;
|
||||||
|
d->bytesTransferred = 0;
|
||||||
|
d->lastTransferRate = 0;
|
||||||
|
d->timeTransferSample.stamp();
|
||||||
|
d->totalBytesDownloaded = 0;
|
||||||
|
d->maxPipelineDepth = 5;
|
||||||
|
setUserAgent("SimGear-" SG_STRINGIZE(SIMGEAR_VERSION));
|
||||||
d->tlsCertificatePath = SGPath::fromEnv("SIMGEAR_TLS_CERT_PATH");
|
d->tlsCertificatePath = SGPath::fromEnv("SIMGEAR_TLS_CERT_PATH");
|
||||||
d->createCurlMulti();
|
d->createCurlMulti();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user