summaryrefslogtreecommitdiffstats
path: root/net/base/upload_data.cc
diff options
context:
space:
mode:
authorsatish@chromium.org <satish@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-04 17:53:22 +0000
committersatish@chromium.org <satish@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-04 17:53:22 +0000
commit0c9bf87fe0b87849105fc7a2ea16280e48ee9089 (patch)
tree8858b7c1f6c1071b2a0f93a92c72f08dcb0ad96d /net/base/upload_data.cc
parent27030d8d5d54002e1baaf19fefd909ebfb82de40 (diff)
downloadchromium_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.cc17
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();
}