Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3253)

Unified Diff: chrome/browser/sync/notifier/communicator/connection_settings.cc

Issue 1956001: Moved XMPP notifier library from chrome/browser/sync to chrome/common.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sync/notifier/communicator/connection_settings.cc
===================================================================
--- chrome/browser/sync/notifier/communicator/connection_settings.cc (revision 46353)
+++ chrome/browser/sync/notifier/communicator/connection_settings.cc (working copy)
@@ -1,127 +0,0 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <algorithm>
-#include <deque>
-#include <string>
-#include <vector>
-
-#include "chrome/browser/sync/notifier/communicator/connection_settings.h"
-#include "talk/base/helpers.h"
-#include "talk/xmpp/xmppclientsettings.h"
-
-namespace notifier {
-
-class RandomGenerator {
- public:
- int operator()(int ceiling) {
- return static_cast<int>(cricket::CreateRandomId() % ceiling);
- }
-};
-
-void ConnectionSettings::FillXmppClientSettings(
- buzz::XmppClientSettings* xcs) const {
- assert(xcs);
- xcs->set_protocol(protocol_);
- xcs->set_server(server_);
- xcs->set_proxy(proxy_.type);
- if (proxy_.type != talk_base::PROXY_NONE) {
- xcs->set_proxy_host(proxy_.address.IPAsString());
- xcs->set_proxy_port(proxy_.address.port());
- }
- if ((proxy_.type != talk_base::PROXY_NONE) && !proxy_.username.empty()) {
- xcs->set_use_proxy_auth(true);
- xcs->set_proxy_user(proxy_.username);
- xcs->set_proxy_pass(proxy_.password);
- } else {
- xcs->set_use_proxy_auth(false);
- }
-}
-
-void ConnectionSettingsList::AddPermutations(const std::string& hostname,
- const std::vector<uint32>& iplist,
- int16 port,
- bool special_port_magic,
- bool proxy_only) {
- // randomize the list. This ensures the iplist isn't always
- // evaluated in the order returned by DNS
- std::vector<uint32> iplist_random = iplist;
- RandomGenerator rg;
- std::random_shuffle(iplist_random.begin(), iplist_random.end(), rg);
-
- // Put generated addresses in a new deque, then append on the list_, since
- // there are order dependencies and AddPermutations() may be called more
- // than once.
- std::deque<ConnectionSettings> list_temp;
-
- // Permute addresses for this server. In some cases we haven't resolved the
- // to ip addresses.
- talk_base::SocketAddress server(hostname, port, false);
- if (iplist_random.empty()) {
- // We couldn't pre-resolve the hostname, so let's hope it will resolve
- // further down the pipeline (by a proxy, for example).
- PermuteForAddress(server, special_port_magic, proxy_only, &list_temp);
- } else {
- // Generate a set of possibilities for each server address.
- // Don't do permute duplicates.
- for (size_t index = 0; index < iplist_random.size(); ++index) {
- if (std::find(iplist_seen_.begin(), iplist_seen_.end(),
- iplist_random[index]) != iplist_seen_.end()) {
- continue;
- }
- iplist_seen_.push_back(iplist_random[index]);
- server.SetResolvedIP(iplist_random[index]);
- PermuteForAddress(server, special_port_magic, proxy_only, &list_temp);
- }
- }
-
- // Add this list to the instance list
- while (list_temp.size() != 0) {
- list_.push_back(list_temp[0]);
- list_temp.pop_front();
- }
-}
-
-
-void ConnectionSettingsList::PermuteForAddress(
- const talk_base::SocketAddress& server,
- bool special_port_magic,
- bool proxy_only,
- std::deque<ConnectionSettings>* list_temp) {
- assert(list_temp);
- *(template_.mutable_server()) = server;
-
- // Use all of the original settings
- list_temp->push_back(template_);
-
- // Try alternate port
- if (special_port_magic) {
- ConnectionSettings settings(template_);
- settings.set_protocol(cricket::PROTO_SSLTCP);
- settings.mutable_server()->SetPort(443);
- // HTTPS proxies usually require port 443, so try it first
- if ((template_.proxy().type == talk_base::PROXY_HTTPS) ||
- (template_.proxy().type == talk_base::PROXY_UNKNOWN)) {
- list_temp->push_front(settings);
- } else {
- list_temp->push_back(settings);
- }
- }
-
- if (!proxy_only) {
- // Try without the proxy
- if (template_.proxy().type != talk_base::PROXY_NONE) {
- ConnectionSettings settings(template_);
- settings.mutable_proxy()->type = talk_base::PROXY_NONE;
- list_temp->push_back(settings);
-
- if (special_port_magic) {
- settings.set_protocol(cricket::PROTO_SSLTCP);
- settings.mutable_server()->SetPort(443);
- list_temp->push_back(settings);
- }
- }
- }
-}
-} // namespace notifier

Powered by Google App Engine
This is Rietveld 408576698