diff options
author | satish@chromium.org <satish@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-04 17:53:22 +0000 |
---|---|---|
committer | satish@chromium.org <satish@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-04 17:53:22 +0000 |
commit | 0c9bf87fe0b87849105fc7a2ea16280e48ee9089 (patch) | |
tree | 8858b7c1f6c1071b2a0f93a92c72f08dcb0ad96d /net/base/upload_data.cc | |
parent | 27030d8d5d54002e1baaf19fefd909ebfb82de40 (diff) | |
download | chromium_src-0c9bf87fe0b87849105fc7a2ea16280e48ee9089.zip chromium_src-0c9bf87fe0b87849105fc7a2ea16280e48ee9089.tar.gz chromium_src-0c9bf87fe0b87849105fc7a2ea16280e48ee9089.tar.bz2 |
Add chunked uploads support to SPDY
As part of this, I had to move the chunked encoding part from UploadData::Element::SetChunk
to HttpStreamParser::DoSendBody as SPDY doesn't have this encoded format and UploadData
needs to serve both.
BUG=none
TEST=net_unittests (2 new tests added)
Committed and rolled back: http://src.chromium.org/viewvc/chrome?view=rev&revision=76892
Review URL: http://codereview.chromium.org/6292013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76930 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/upload_data.cc')
-rw-r--r-- | net/base/upload_data.cc | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/net/base/upload_data.cc b/net/base/upload_data.cc index 490029c..4af308e 100644 --- a/net/base/upload_data.cc +++ b/net/base/upload_data.cc @@ -28,16 +28,13 @@ UploadData::Element::~Element() { delete file_stream_; } -void UploadData::Element::SetToChunk(const char* bytes, int bytes_len) { - std::string chunk_length = StringPrintf("%X\r\n", bytes_len); +void UploadData::Element::SetToChunk(const char* bytes, + int bytes_len, + bool is_last_chunk) { bytes_.clear(); - bytes_.insert(bytes_.end(), chunk_length.data(), - chunk_length.data() + chunk_length.length()); bytes_.insert(bytes_.end(), bytes, bytes + bytes_len); - const char* crlf = "\r\n"; - bytes_.insert(bytes_.end(), crlf, crlf + 2); type_ = TYPE_CHUNK; - is_last_chunk_ = (bytes_len == 0); + is_last_chunk_ = is_last_chunk; } uint64 UploadData::Element::GetContentLength() { @@ -146,10 +143,12 @@ void UploadData::AppendBlob(const GURL& blob_url) { elements_.back().SetToBlobUrl(blob_url); } -void UploadData::AppendChunk(const char* bytes, int bytes_len) { +void UploadData::AppendChunk(const char* bytes, + int bytes_len, + bool is_last_chunk) { DCHECK(is_chunked_); elements_.push_back(Element()); - elements_.back().SetToChunk(bytes, bytes_len); + elements_.back().SetToChunk(bytes, bytes_len, is_last_chunk); if (chunk_callback_) chunk_callback_->OnChunkAvailable(); } |