diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2012-04-08 19:00:07 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2012-04-08 19:00:07 +0900 |
| commit | 1e0068e4d4ce79d10a2ea4f6462242bee3708dc8 (patch) | |
| tree | d6c66da3c986b2b51455d0400b7a7033f75454ac /src/HttpHeader.cc | |
| parent | c648ca0c5c328827327f0973ec4f8a06bacf912f (diff) | |
WebSocket: Check keyword string in comma separeted values in HTTP
header field.
Diffstat (limited to 'src/HttpHeader.cc')
| -rw-r--r-- | src/HttpHeader.cc | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/HttpHeader.cc b/src/HttpHeader.cc index 8513cb56..1bba0ad2 100644 --- a/src/HttpHeader.cc +++ b/src/HttpHeader.cc @@ -293,4 +293,28 @@ const std::string& HttpHeader::getRequestPath() const return requestPath_; } +bool HttpHeader::fieldContains(const std::string& name, + const std::string& value) +{ + std::pair<std::multimap<std::string, std::string>::const_iterator, + std::multimap<std::string, std::string>::const_iterator> range = + equalRange(name); + for(std::multimap<std::string, std::string>::const_iterator i = range.first; + i != range.second; ++i) { + std::vector<Scip> values; + util::splitIter((*i).second.begin(), (*i).second.end(), + std::back_inserter(values), + ',', + true // doStrip + ); + for(std::vector<Scip>::const_iterator j = values.begin(), + eoj = values.end(); j != eoj; ++j) { + if(util::strieq((*j).first, (*j).second, value.begin(), value.end())) { + return true; + } + } + } + return false; +} + } // namespace aria2 |
