Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions indra/llcorehttp/_httpoprequest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -538,6 +538,7 @@ HttpStatus HttpOpRequest::prepareRequest(HttpService * service)
long sslHostV(0L);
long dnsCacheTimeout(-1L);
long nobody(0L);
curl_off_t lastModified(0L);

if (mReqOptions)
{
Expand All @@ -546,6 +547,7 @@ HttpStatus HttpOpRequest::prepareRequest(HttpService * service)
sslHostV = mReqOptions->getSSLVerifyHost() ? 2L : 0L;
dnsCacheTimeout = mReqOptions->getDNSCacheTimeout();
nobody = mReqOptions->getHeadersOnly() ? 1L : 0L;
lastModified = (curl_off_t)mReqOptions->getLastModified();
}
check_curl_easy_setopt(mCurlHandle, CURLOPT_FOLLOWLOCATION, follow_redirect);

Expand All @@ -554,6 +556,17 @@ HttpStatus HttpOpRequest::prepareRequest(HttpService * service)

check_curl_easy_setopt(mCurlHandle, CURLOPT_NOBODY, nobody);

if (lastModified)
{
check_curl_easy_setopt(mCurlHandle, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
#if (LIBCURL_VERSION_NUM >= 0x073B00)
// requires curl 7.59.0
check_curl_easy_setopt(mCurlHandle, CURLOPT_TIMEVALUE_LARGE, lastModified);
#else
check_curl_easy_setopt(mCurlHandle, CURLOPT_TIMEVALUE, (long)lastModified);
#endif
}

// The Linksys WRT54G V5 router has an issue with frequent
// DNS lookups from LAN machines. If they happen too often,
// like for every HTTP request, the router gets annoyed after
Expand Down
6 changes: 6 additions & 0 deletions indra/llcorehttp/httpoptions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ HttpOptions::HttpOptions() :
mVerifyPeer(sDefaultVerifyPeer),
mVerifyHost(false),
mDNSCacheTimeout(-1L),
mLastModified(0),
mNoBody(false)
{}

Expand Down Expand Up @@ -129,6 +130,11 @@ void HttpOptions::setHeadersOnly(bool nobody)
}
}

void HttpOptions::setLastModified(time_t lastModified)
{
mLastModified = lastModified;
}

void HttpOptions::setDefaultSSLVerifyPeer(bool verify)
{
sDefaultVerifyPeer = verify;
Expand Down
8 changes: 8 additions & 0 deletions indra/llcorehttp/httpoptions.h
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,13 @@ class HttpOptions : private boost::noncopyable
return mNoBody;
}

// Default: 0
void setLastModified(time_t lastModified);
time_t getLastModified() const
{
return mLastModified;
}

/// Sets default behavior for verifying that the name in the
/// security certificate matches the name of the host contacted.
/// Defaults false if not set, but should be set according to
Expand All @@ -199,6 +206,7 @@ class HttpOptions : private boost::noncopyable
bool mVerifyHost;
int mDNSCacheTimeout;
bool mNoBody;
time_t mLastModified;

static bool sDefaultVerifyPeer;
}; // end class HttpOptions
Expand Down
4 changes: 2 additions & 2 deletions indra/newview/llviewernetwork.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -450,7 +450,7 @@ std::string LLGridManager::getGridLabel(const std::string& grid)
{
std::string grid_label;
std::string grid_name = getGrid(grid);
if (!grid.empty())
if (!grid_name.empty())
{
grid_label = mGridList[grid_name][GRID_LABEL_VALUE].asString();
}
Expand All @@ -466,7 +466,7 @@ std::string LLGridManager::getGridId(const std::string& grid)
{
std::string grid_id;
std::string grid_name = getGrid(grid);
if (!grid.empty())
if (!grid_name.empty())
{
grid_id = mGridList[grid_name][GRID_ID_VALUE].asString();
}
Expand Down
Loading