diff options
| author | Kartic Krishnamurthy <drunkensufi@lindenlab.com> | 2007-07-18 01:28:59 +0000 |
|---|---|---|
| committer | Kartic Krishnamurthy <drunkensufi@lindenlab.com> | 2007-07-18 01:28:59 +0000 |
| commit | e1ab7d8a30cc40cbd1d471c67def21508c82ff49 (patch) | |
| tree | 3f834cc8207ea481f6caf820738c8cbf5388bc9a /indra/llcommon/lluri.cpp | |
| parent | 7964c6f7a5b622d698f7d471690b29122966b1b2 (diff) | |
svn merge -r63705:65463 svn+ssh://svn/svn/linden/branches/dpo-3-bug-fix
NOTE: r63705 is *not* the earliest rev# for dpo-3-bug-fix.
Diffstat (limited to 'indra/llcommon/lluri.cpp')
| -rw-r--r-- | indra/llcommon/lluri.cpp | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/indra/llcommon/lluri.cpp b/indra/llcommon/lluri.cpp index 5cb6067990..22526c9a03 100644 --- a/indra/llcommon/lluri.cpp +++ b/indra/llcommon/lluri.cpp @@ -275,9 +275,10 @@ LLURI LLURI::buildHTTP(const std::string& prefix, const LLSD& query) { LLURI uri = buildHTTP(prefix, path); - uri.mEscapedQuery = mapToQueryString(query); // break out and escape each query component - uri.mEscapedOpaque += "?" + uri.mEscapedQuery ; + uri.mEscapedQuery = mapToQueryString(query); + uri.mEscapedOpaque += uri.mEscapedQuery ; + uri.mEscapedQuery.erase(0,1); // trim the leading '?' return uri; } @@ -581,20 +582,30 @@ LLSD LLURI::queryMap(std::string escaped_query_string) std::string LLURI::mapToQueryString(const LLSD& queryMap) { std::string query_string; - if (queryMap.isMap()) { - for (LLSD::map_const_iterator iter = queryMap.beginMap(); - iter != queryMap.endMap(); - iter++) + bool first_element = true; + LLSD::map_const_iterator iter = queryMap.beginMap(); + LLSD::map_const_iterator end = queryMap.endMap(); + std::ostringstream ostr; + for (; iter != end; ++iter) { - query_string += escapeQueryVariable(iter->first) + - (iter->second.isUndefined() ? "" : "=" + escapeQueryValue(iter->second.asString())) + "&" ; + if(first_element) + { + ostr << "?"; + first_element = false; + } + else + { + ostr << "&"; + } + ostr << escapeQueryVariable(iter->first); + if(iter->second.isDefined()) + { + ostr << "=" << escapeQueryValue(iter->second.asString()); + } } - //if (queryMap.size() > 0) - //{ - // query_string += "?" + query_string ; - //} + query_string = ostr.str(); } return query_string; } |
