summaryrefslogtreecommitdiff
path: root/multinetwork/httpurl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'multinetwork/httpurl.cpp')
-rw-r--r--multinetwork/httpurl.cpp38
1 files changed, 10 insertions, 28 deletions
diff --git a/multinetwork/httpurl.cpp b/multinetwork/httpurl.cpp
index a562ae2c..d78c0c93 100644
--- a/multinetwork/httpurl.cpp
+++ b/multinetwork/httpurl.cpp
@@ -29,7 +29,7 @@
#include <android-base/stringprintf.h>
#include "common.h"
-using android::base::StringPrintf;
+
struct Parameters {
Parameters() : ss({}), port("80"), path("/") {}
@@ -41,18 +41,10 @@ struct Parameters {
std::string path;
};
-bool resolveHostname(const struct Arguments& args, struct Parameters* parameters);
bool parseUrl(const struct Arguments& args, struct Parameters* parameters) {
if (parameters == nullptr) { return false; }
- if (args.random_name) {
- parameters->host = StringPrintf("%d-%d-ipv6test.ds.metric.gstatic.com", rand(), rand());
- parameters->hostname = parameters->host;
- parameters->path = "/ip.js?fmt=text";
- return resolveHostname(args, parameters);
- }
-
static const char HTTP_PREFIX[] = "http://";
if (strncmp(args.arg1, HTTP_PREFIX, strlen(HTTP_PREFIX)) != 0) {
std::cerr << "Only " << HTTP_PREFIX << " URLs supported." << std::endl;
@@ -99,10 +91,6 @@ bool parseUrl(const struct Arguments& args, struct Parameters* parameters) {
// TODO: find the request portion to send (before '#...').
- return resolveHostname(args, parameters);
-}
-
-bool resolveHostname(const struct Arguments& args, struct Parameters* parameters) {
std::cerr << "Resolving hostname=" << parameters->hostname
<< ", port=" << parameters->port
<< std::endl;
@@ -148,6 +136,7 @@ bool resolveHostname(const struct Arguments& args, struct Parameters* parameters
return true;
}
+
int makeTcpSocket(sa_family_t address_family, net_handle_t nethandle) {
int fd = socket(address_family, SOCK_STREAM, IPPROTO_TCP);
if (fd < 0) {
@@ -244,20 +233,13 @@ int main(int argc, const char* argv[]) {
struct Parameters parameters;
if (!parseUrl(args, &parameters)) { return -1; }
- int ret = 0;
-
- for (int i = 0; i < args.attempts; i++) {
- // TODO: Fall back from IPv6 to IPv4 if ss.ss_family is AF_UNSPEC.
- // This will involve changes to parseUrl() as well.
- struct FdAutoCloser closer = makeTcpSocket(
- parameters.ss.ss_family,
- (args.api_mode == ApiMode::EXPLICIT) ? args.nethandle : NETWORK_UNSPECIFIED);
- if (closer.fd < 0) {
- return closer.fd;
- }
-
- ret |= doHttpQuery(closer.fd, parameters);
- }
+ // TODO: Fall back from IPv6 to IPv4 if ss.ss_family is AF_UNSPEC.
+ // This will involve changes to parseUrl() as well.
+ struct FdAutoCloser closer = makeTcpSocket(
+ parameters.ss.ss_family,
+ (args.api_mode == ApiMode::EXPLICIT) ? args.nethandle
+ : NETWORK_UNSPECIFIED);
+ if (closer.fd < 0) { return closer.fd; }
- return ret;
+ return doHttpQuery(closer.fd, parameters);
}