diff options
-rw-r--r-- | indra/llcommon/lluri.cpp | 35 | ||||
-rw-r--r-- | indra/llcommon/lluri.h | 3 | ||||
-rw-r--r-- | indra/llmessage/llhttpclient.cpp | 20 |
3 files changed, 53 insertions, 5 deletions
diff --git a/indra/llcommon/lluri.cpp b/indra/llcommon/lluri.cpp index a2c651b444..bf0d2cb21e 100644 --- a/indra/llcommon/lluri.cpp +++ b/indra/llcommon/lluri.cpp @@ -279,6 +279,23 @@ LLURI LLURI::buildBulkAgentPresenceURI(LLApp* app) } // static +LLURI LLURI::buildBulkAgentNamesURI(LLApp* app) +{ + std::string host = "localhost:12040"; + + if (app) + { + host = app->getOption("backbone-host-port").asString(); + } + + LLSD path = LLSD::emptyArray(); + path.append("agent"); + path.append("names"); + + return buildHTTP(host, path); +} + +// static LLURI LLURI::buildAgentSessionURI(const LLUUID& agent_id, LLApp* app) { return buildBackboneURL(app, "agent", agent_id.asString(), "session"); @@ -304,6 +321,24 @@ LLURI LLURI::buildInventoryHostURI(const LLUUID& agent_id, LLApp* app) } // static +LLURI LLURI::buildAgentNameURI(const LLUUID& agent_id, LLApp* app) +{ + std::string host = "localhost:12040"; + + if (app) + { + host = app->getOption("backbone-host-port").asString(); + } + + LLSD path = LLSD::emptyArray(); + path.append("agent"); + path.append(agent_id); + path.append("name"); + + return buildHTTP(host, path); +} + +// static LLURI LLURI::buildAgentLoginInfoURI(const LLUUID& agent_id, const std::string& dataserver) { LLSD path = LLSD::emptyArray(); diff --git a/indra/llcommon/lluri.h b/indra/llcommon/lluri.h index b5c3a84173..865a3b21a0 100644 --- a/indra/llcommon/lluri.h +++ b/indra/llcommon/lluri.h @@ -79,10 +79,11 @@ public: // Functions for building specific URIs for web services static LLURI buildAgentPresenceURI(const LLUUID& agent_id, LLApp* app); static LLURI buildBulkAgentPresenceURI(LLApp* app); + static LLURI buildBulkAgentNamesURI(LLApp* app); static LLURI buildAgentSessionURI(const LLUUID& agent_id, LLApp* app); static LLURI buildAgentLoginInfoURI(const LLUUID& agent_id, const std::string& dataserver); static LLURI buildInventoryHostURI(const LLUUID& agent_id, LLApp* app); - + static LLURI buildAgentNameURI(const LLUUID& agent_id, LLApp* app); private: std::string mScheme; std::string mEscapedOpaque; diff --git a/indra/llmessage/llhttpclient.cpp b/indra/llmessage/llhttpclient.cpp index f93a12b274..0929f93dc1 100644 --- a/indra/llmessage/llhttpclient.cpp +++ b/indra/llmessage/llhttpclient.cpp @@ -265,11 +265,19 @@ public: LLSD asLLSD() { LLSD content; + + if (mBuffer.empty()) return content; + std::istringstream istr(mBuffer); LLSDSerialize::fromXML(content, istr); return content; } + std::string asString() + { + return mBuffer; + } + private: std::string mBuffer; }; @@ -298,15 +306,20 @@ LLSD LLHTTPClient::blockingGet(const std::string& url) S32 http_status = 499; curl_easy_getinfo(curlp,CURLINFO_RESPONSE_CODE, &http_status); + response["status"] = http_status; + if (curl_success != 0 && http_status != 404) // We expect 404s, don't spam for them. { llwarns << "CURL ERROR: " << curl_error_buffer << llendl; + + response["body"] = http_buffer.asString(); + } + else + { + response["body"] = http_buffer.asLLSD(); } - response["status"] = http_status; - response["body"] = http_buffer.asLLSD(); - curl_easy_cleanup(curlp); return response; @@ -375,4 +388,3 @@ namespace boost } } }; - |