Commit 2239d36e authored by rch's avatar rch Committed by Commit bot

Clean up quic_simple_client_bin.cc to sync with quic_client_bin.cc

Review-Url: https://codereview.chromium.org/2600183002
Cr-Commit-Position: refs/heads/master@{#440920}
parent c17e290f
......@@ -53,7 +53,6 @@
#include "net/quic/core/quic_flags.h"
#include "net/quic/core/quic_packets.h"
#include "net/quic/core/quic_server_id.h"
#include "net/quic/core/quic_utils.h"
#include "net/quic/platform/api/quic_socket_address.h"
#include "net/quic/platform/api/quic_str_cat.h"
#include "net/quic/platform/api/quic_text_utils.h"
......@@ -70,13 +69,13 @@ using net::CTVerifier;
using net::MultiLogCTVerifier;
using net::ProofVerifier;
using net::ProofVerifierChromium;
using net::QuicTextUtils;
using net::SpdyHeaderBlock;
using net::TransportSecurityState;
using net::QuicTextUtils;
using std::cout;
using std::cerr;
using std::string;
using std::endl;
using std::string;
// The IP or hostname the quic client will connect to.
string FLAGS_host = "";
......@@ -260,7 +259,6 @@ int main(int argc, char* argv[]) {
std::unique_ptr<CertVerifier> cert_verifier(CertVerifier::CreateDefault());
std::unique_ptr<TransportSecurityState> transport_security_state(
new TransportSecurityState);
transport_security_state.reset(new TransportSecurityState);
std::unique_ptr<CTVerifier> ct_verifier(new MultiLogCTVerifier());
std::unique_ptr<CTPolicyEnforcer> ct_policy_enforcer(new CTPolicyEnforcer());
std::unique_ptr<ProofVerifier> proof_verifier;
......@@ -321,6 +319,7 @@ int main(int argc, char* argv[]) {
// Make sure to store the response, for later output.
client.set_store_response(true);
// Send the request.
client.SendRequestAndWaitForResponse(header_block, body, /*fin=*/true);
......
......@@ -34,32 +34,20 @@ using base::StringPiece;
namespace net {
QuicSimpleClient::QuicSimpleClient(
IPEndPoint server_address,
QuicSocketAddress server_address,
const QuicServerId& server_id,
const QuicVersionVector& supported_versions,
std::unique_ptr<ProofVerifier> proof_verifier)
: QuicSimpleClient(server_address,
server_id,
supported_versions,
QuicConfig(),
std::move(proof_verifier)) {}
QuicSimpleClient::QuicSimpleClient(
IPEndPoint server_address,
const QuicServerId& server_id,
const QuicVersionVector& supported_versions,
const QuicConfig& config,
std::unique_ptr<ProofVerifier> proof_verifier)
: QuicClientBase(server_id,
supported_versions,
config,
QuicConfig(),
CreateQuicConnectionHelper(),
CreateQuicAlarmFactory(),
std::move(proof_verifier)),
initialized_(false),
packet_reader_started_(false),
weak_factory_(this) {
set_server_address(QuicSocketAddress(QuicSocketAddressImpl(server_address)));
set_server_address(server_address);
}
QuicSimpleClient::~QuicSimpleClient() {
......@@ -77,15 +65,12 @@ bool QuicSimpleClient::CreateUDPSocketAndBind(QuicSocketAddress server_address,
new UDPClientSocket(DatagramSocket::DEFAULT_BIND, RandIntCallback(),
&net_log_, NetLogSource()));
int address_family =
server_address.impl().socket_address().GetSockAddrFamily();
if (bind_to_address.impl().ip_address().size() != 0) {
client_address_ =
IPEndPoint(bind_to_address.impl().ip_address(), bind_to_port);
} else if (address_family == AF_INET) {
client_address_ = IPEndPoint(IPAddress::IPv4AllZeros(), bind_to_port);
if (bind_to_address.IsInitialized()) {
client_address_ = QuicSocketAddress(bind_to_address, local_port());
} else if (server_address.host().address_family() == IpAddressFamily::IP_V4) {
client_address_ = QuicSocketAddress(QuicIpAddress::Any4(), bind_to_port);
} else {
client_address_ = IPEndPoint(IPAddress::IPv6AllZeros(), bind_to_port);
client_address_ = QuicSocketAddress(QuicIpAddress::Any6(), bind_to_port);
}
int rc = socket->Connect(server_address.impl().socket_address());
......@@ -106,11 +91,13 @@ bool QuicSimpleClient::CreateUDPSocketAndBind(QuicSocketAddress server_address,
return false;
}
rc = socket->GetLocalAddress(&client_address_);
IPEndPoint address;
rc = socket->GetLocalAddress(&address);
if (rc != OK) {
LOG(ERROR) << "GetLocalAddress failed: " << ErrorToShortString(rc);
return false;
}
client_address_ = QuicSocketAddress(QuicSocketAddressImpl(address));
socket_.swap(socket);
packet_reader_.reset(new QuicChromiumPacketReader(
......@@ -164,7 +151,7 @@ void QuicSimpleClient::OnReadError(int result,
}
QuicSocketAddress QuicSimpleClient::GetLatestClientAddress() const {
return QuicSocketAddress(QuicSocketAddressImpl(client_address_));
return client_address_;
}
bool QuicSimpleClient::OnPacket(const QuicReceivedPacket& packet,
......
......@@ -40,17 +40,11 @@ class QuicClientPeer;
class QuicSimpleClient : public QuicClientBase,
public QuicChromiumPacketReader::Visitor {
public:
// Create a quic client, which will have events managed by an externally owned
// EpollServer.
QuicSimpleClient(IPEndPoint server_address,
// Create a quic client, which will have events managed by the message loop.
QuicSimpleClient(QuicSocketAddress server_address,
const QuicServerId& server_id,
const QuicVersionVector& supported_versions,
std::unique_ptr<ProofVerifier> proof_verifier);
QuicSimpleClient(IPEndPoint server_address,
const QuicServerId& server_id,
const QuicVersionVector& supported_versions,
const QuicConfig& config,
std::unique_ptr<ProofVerifier> proof_verifier);
~QuicSimpleClient() override;
......@@ -87,7 +81,7 @@ class QuicSimpleClient : public QuicClientBase,
QuicChromiumClock clock_;
// Address of the client if the client is connected to the server.
IPEndPoint client_address_;
QuicSocketAddress client_address_;
// UDP socket connected to the server.
std::unique_ptr<UDPClientSocket> socket_;
......
......@@ -44,21 +44,17 @@
#include "base/command_line.h"
#include "base/logging.h"
#include "base/message_loop/message_loop.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
#include "net/base/ip_address.h"
#include "net/base/ip_endpoint.h"
#include "net/base/net_errors.h"
#include "net/base/privacy_mode.h"
#include "net/cert/cert_verifier.h"
#include "net/cert/multi_log_ct_verifier.h"
#include "net/http/http_request_info.h"
#include "net/http/transport_security_state.h"
#include "net/quic/chromium/crypto/proof_verifier_chromium.h"
#include "net/quic/core/quic_error_codes.h"
#include "net/quic/core/quic_packets.h"
#include "net/quic/core/quic_server_id.h"
#include "net/quic/platform/api/quic_socket_address.h"
#include "net/quic/platform/api/quic_str_cat.h"
#include "net/quic/platform/api/quic_text_utils.h"
#include "net/spdy/spdy_header_block.h"
#include "net/spdy/spdy_http_utils.h"
......@@ -74,6 +70,7 @@ using net::MultiLogCTVerifier;
using net::ProofVerifier;
using net::ProofVerifierChromium;
using net::QuicTextUtils;
using net::SpdyHeaderBlock;
using net::TransportSecurityState;
using std::cout;
using std::cerr;
......@@ -223,10 +220,8 @@ int main(int argc, char* argv[]) {
base::MessageLoopForIO message_loop;
// Determine IP address to connect to from supplied hostname.
net::IPAddress ip_addr;
net::QuicIpAddress ip_addr;
// TODO(rtenneti): GURL's doesn't support default_protocol argument, thus
// protocol is required in the URL.
GURL url(urls[0]);
string host = FLAGS_host;
if (host.empty()) {
......@@ -236,7 +231,7 @@ int main(int argc, char* argv[]) {
if (port == 0) {
port = url.EffectiveIntPort();
}
if (!ip_addr.AssignFromIPLiteral(host)) {
if (!ip_addr.FromString(host)) {
net::AddressList addresses;
int rv = net::SynchronousHostResolver::Resolve(host, &addresses);
if (rv != net::OK) {
......@@ -244,10 +239,11 @@ int main(int argc, char* argv[]) {
<< "' : " << net::ErrorToShortString(rv);
return 1;
}
ip_addr = addresses[0].address();
ip_addr =
net::QuicIpAddress(net::QuicIpAddressImpl(addresses[0].address()));
}
string host_port = net::IPAddressToStringWithPort(ip_addr, FLAGS_port);
string host_port = net::QuicStrCat(ip_addr.ToString(), ":", port);
VLOG(1) << "Resolved " << host << " to " << host_port << endl;
// Build the client, and try to connect.
......@@ -272,7 +268,7 @@ int main(int argc, char* argv[]) {
cert_verifier.get(), ct_policy_enforcer.get(),
transport_security_state.get(), ct_verifier.get()));
}
net::QuicSimpleClient client(net::IPEndPoint(ip_addr, port), server_id,
net::QuicSimpleClient client(net::QuicSocketAddress(ip_addr, port), server_id,
versions, std::move(proof_verifier));
client.set_initial_max_packet_length(
FLAGS_initial_mtu != 0 ? FLAGS_initial_mtu : net::kDefaultMaxPacketSize);
......@@ -302,36 +298,28 @@ int main(int argc, char* argv[]) {
}
// Construct a GET or POST request for supplied URL.
net::HttpRequestInfo request;
request.method = body.empty() ? "GET" : "POST";
request.url = url;
SpdyHeaderBlock header_block;
header_block[":method"] = body.empty() ? "GET" : "POST";
header_block[":scheme"] = url.scheme();
header_block[":authority"] = url.host();
header_block[":path"] = url.path();
// Append any additional headers supplied on the command line.
for (const std::string& header :
base::SplitString(FLAGS_headers, ";", base::KEEP_WHITESPACE,
base::SPLIT_WANT_NONEMPTY)) {
string sp;
base::TrimWhitespaceASCII(header, base::TRIM_ALL, &sp);
for (StringPiece sp : QuicTextUtils::Split(FLAGS_headers, ';')) {
QuicTextUtils::RemoveLeadingAndTrailingWhitespace(&sp);
if (sp.empty()) {
continue;
}
std::vector<string> kv =
base::SplitString(sp, ":", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
CHECK_EQ(2u, kv.size());
string key;
base::TrimWhitespaceASCII(kv[0], base::TRIM_ALL, &key);
string value;
base::TrimWhitespaceASCII(kv[1], base::TRIM_ALL, &value);
request.extra_headers.SetHeader(key, value);
std::vector<StringPiece> kv = QuicTextUtils::Split(sp, ':');
QuicTextUtils::RemoveLeadingAndTrailingWhitespace(&kv[0]);
QuicTextUtils::RemoveLeadingAndTrailingWhitespace(&kv[1]);
header_block[kv[0]] = kv[1];
}
// Make sure to store the response, for later output.
client.set_store_response(true);
// Send the request.
net::SpdyHeaderBlock header_block;
net::CreateSpdyHeadersFromHttpRequest(request, request.extra_headers,
/*direct=*/true, &header_block);
client.SendRequestAndWaitForResponse(header_block, body, /*fin=*/true);
// Print request and response details.
......@@ -356,6 +344,7 @@ int main(int argc, char* argv[]) {
} else {
cout << "body: " << response_body << endl;
}
cout << "trailers: " << client.latest_response_trailers() << endl;
}
size_t response_code = client.latest_response_code();
......
......@@ -13,7 +13,7 @@ namespace net {
namespace test {
TEST(QuicSimpleClientTest, Initialize) {
IPEndPoint server_address(IPEndPoint(net::test::Loopback4(), 80));
QuicSocketAddress server_address(QuicIpAddress::Loopback4(), 80);
QuicServerId server_id("hostname", server_address.port(),
PRIVACY_MODE_DISABLED);
QuicVersionVector versions = AllSupportedVersions();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment