diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-01-20 00:25:01 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-01-20 00:25:01 +0900 |
| commit | 1d71626bea62f10e723609e32dce46fb86179749 (patch) | |
| tree | 398a15cdbf92b63f67235f14e4ccfa85bf8160a9 /src/HttpHeader.cc | |
| parent | 7a857e1913339c915aa103a00a7b3f4be19016e3 (diff) | |
Supported multi-line HTTP header field value.
See http://tools.ietf.org/html/rfc2616#section-4.2
Diffstat (limited to 'src/HttpHeader.cc')
| -rw-r--r-- | src/HttpHeader.cc | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/HttpHeader.cc b/src/HttpHeader.cc index 9e191ab1..a4158dff 100644 --- a/src/HttpHeader.cc +++ b/src/HttpHeader.cc @@ -193,14 +193,25 @@ void HttpHeader::setRequestPath(const std::string& requestPath) void HttpHeader::fill(std::istream& in) { std::string line; - while(std::getline(in, line)) { + std::getline(in, line); + while(in) { line = util::strip(line); if(line.empty()) { - continue; + std::getline(in, line); + } else { + std::pair<std::string, std::string> hp; + util::divide(hp, line, ':'); + while(std::getline(in, line)) { + if(!line.empty() && (line[0] == ' ' || line[0] == '\t')) { + line = util::strip(line); + hp.second += " "; + hp.second += line; + } else { + break; + } + } + put(hp.first, hp.second); } - std::pair<std::string, std::string> hp; - util::divide(hp, line, ':'); - put(hp.first, hp.second); } } |
