summaryrefslogtreecommitdiffstats
path: root/net/http/http_basic_stream.cc
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2010-11-18 18:32:45 +0000
committerBen Murdoch <benm@google.com>2010-11-18 18:38:07 +0000
commit513209b27ff55e2841eac0e4120199c23acce758 (patch)
treeaeba30bb08c5f47c57003544e378a377c297eee6 /net/http/http_basic_stream.cc
parent164f7496de0fbee436b385a79ead9e3cb81a50c1 (diff)
downloadexternal_chromium-513209b27ff55e2841eac0e4120199c23acce758.zip
external_chromium-513209b27ff55e2841eac0e4120199c23acce758.tar.gz
external_chromium-513209b27ff55e2841eac0e4120199c23acce758.tar.bz2
Merge Chromium at r65505: Initial merge by git.
Change-Id: I31d8f1d8cd33caaf7f47ffa7350aef42d5fbdb45
Diffstat (limited to 'net/http/http_basic_stream.cc')
-rw-r--r--net/http/http_basic_stream.cc25
1 files changed, 20 insertions, 5 deletions
diff --git a/net/http/http_basic_stream.cc b/net/http/http_basic_stream.cc
index ecd692b..433b08e 100644
--- a/net/http/http_basic_stream.cc
+++ b/net/http/http_basic_stream.cc
@@ -4,33 +4,48 @@
#include "net/http/http_basic_stream.h"
+#include "base/stringprintf.h"
#include "net/base/io_buffer.h"
#include "net/base/net_errors.h"
+#include "net/http/http_request_headers.h"
+#include "net/http/http_request_info.h"
#include "net/http/http_stream_parser.h"
+#include "net/http/http_util.h"
#include "net/socket/client_socket_handle.h"
namespace net {
-HttpBasicStream::HttpBasicStream(ClientSocketHandle* connection)
+HttpBasicStream::HttpBasicStream(ClientSocketHandle* connection,
+ bool using_proxy)
: read_buf_(new GrowableIOBuffer()),
- connection_(connection) {
+ connection_(connection),
+ using_proxy_(using_proxy),
+ request_info_(NULL) {
}
int HttpBasicStream::InitializeStream(const HttpRequestInfo* request_info,
const BoundNetLog& net_log,
CompletionCallback* callback) {
+ request_info_ = request_info;
parser_.reset(new HttpStreamParser(connection_.get(), request_info,
read_buf_, net_log));
return OK;
}
-int HttpBasicStream::SendRequest(const std::string& headers,
+int HttpBasicStream::SendRequest(const HttpRequestHeaders& headers,
UploadDataStream* request_body,
HttpResponseInfo* response,
CompletionCallback* callback) {
DCHECK(parser_.get());
- return parser_->SendRequest(headers, request_body, response, callback);
+ const std::string path = using_proxy_ ?
+ HttpUtil::SpecForRequest(request_info_->url) :
+ HttpUtil::PathForRequest(request_info_->url);
+ request_line_ = base::StringPrintf("%s %s HTTP/1.1\r\n",
+ request_info_->method.c_str(),
+ path.c_str()) + headers.ToString();
+
+ return parser_->SendRequest(request_line_, request_body, response, callback);
}
HttpBasicStream::~HttpBasicStream() {}
@@ -60,7 +75,7 @@ HttpStream* HttpBasicStream::RenewStreamForAuth() {
DCHECK(IsResponseBodyComplete());
DCHECK(!IsMoreDataBuffered());
parser_.reset();
- return new HttpBasicStream(connection_.release());
+ return new HttpBasicStream(connection_.release(), using_proxy_);
}
bool HttpBasicStream::IsResponseBodyComplete() const {