| 4400 | } |
| 4401 | |
| 4402 | inline ssize_t write_headers(Stream &strm, const Headers &headers) { |
| 4403 | ssize_t write_len = 0; |
| 4404 | for (const auto &x : headers) { |
| 4405 | std::string s; |
| 4406 | s = x.first; |
| 4407 | s += ": "; |
| 4408 | s += x.second; |
| 4409 | s += "\r\n"; |
| 4410 | |
| 4411 | auto len = strm.write(s.data(), s.size()); |
| 4412 | if (len < 0) { return len; } |
| 4413 | write_len += len; |
| 4414 | } |
| 4415 | auto len = strm.write("\r\n"); |
| 4416 | if (len < 0) { return len; } |
| 4417 | write_len += len; |
| 4418 | return write_len; |
| 4419 | } |
| 4420 | |
| 4421 | inline bool write_data(Stream &strm, const char *d, size_t l) { |
| 4422 | size_t offset = 0; |