Resolve IP address from last curl connection and use it as address for next Octoprint upload

IP resolve only for non secure connection and on windows.
This commit is contained in:
David Kocik
2021-11-25 15:17:41 +01:00
parent 9868206eee
commit e276b70851
4 changed files with 55 additions and 1 deletions

View File

@@ -127,6 +127,7 @@ struct Http::priv
Http::CompleteFn completefn;
Http::ErrorFn errorfn;
Http::ProgressFn progressfn;
Http::IPResolveFn ipresolvefn;
priv(const std::string &url);
~priv();
@@ -390,6 +391,13 @@ void Http::priv::http_perform()
if (errorfn) { errorfn(std::move(buffer), std::string(), http_status); }
} else {
if (completefn) { completefn(std::move(buffer), http_status); }
if (ipresolvefn) {
char* ct;
res = curl_easy_getinfo(curl, CURLINFO_PRIMARY_IP, &ct);
if ((CURLE_OK == res) && ct) {
ipresolvefn(ct);
}
}
}
}
}
@@ -554,6 +562,12 @@ Http& Http::on_progress(ProgressFn fn)
return *this;
}
Http& Http::on_ip_resolve(IPResolveFn fn)
{
if (p) { p->ipresolvefn = std::move(fn); }
return *this;
}
Http::Ptr Http::perform()
{
auto self = std::make_shared<Http>(std::move(*this));