diff options
Diffstat (limited to 'multinetwork/httpurl.cpp')
-rw-r--r-- | multinetwork/httpurl.cpp | 38 |
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, ¶meters)) { 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); } |