bool sinsp_curl::handle_redirect(uri& url, std::string&& loc, std::ostream& os) { if(!loc.empty()) { g_logger.log("HTTP redirect received from [" + url.to_string(false) + ']', sinsp_logger::SEV_INFO); std::string::size_type url_pos = loc.find("//"); if(url_pos != std::string::npos) { uri::credentials_t creds; url.get_credentials(creds); url = trim(loc); if(!creds.first.empty()) { url.set_credentials(creds); } } else // location relative, take just path { url.set_path(trim(loc)); } g_logger.log("HTTP redirecting to [" + url.to_string(false) + "].", sinsp_logger::SEV_INFO); return true; } else { g_logger.log("CURL redirect received from [" + url.to_string(false) + "], " "but location not found.", sinsp_logger::SEV_ERROR); return false; } return false; }
bool uri::operator==(const uri &other) const { return to_string() == other.to_string(); }