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

Side by Side Diff: remoting/host/remoting_me2me_host.cc

Issue 10081025: Call XmppSignalStrategy::SetAuthInfo() on the right thread. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // This file implements a standalone host process for Me2Me. 5 // This file implements a standalone host process for Me2Me.
6 6
7 #if defined(OS_WIN) 7 #if defined(OS_WIN)
8 #include <windows.h> 8 #include <windows.h>
9 #endif 9 #endif
10 10
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 int Run() { 141 int Run() {
142 bool tokens_pending = false; 142 bool tokens_pending = false;
143 if (!LoadConfig(file_io_thread_.message_loop_proxy(), &tokens_pending)) { 143 if (!LoadConfig(file_io_thread_.message_loop_proxy(), &tokens_pending)) {
144 return kInvalidHostConfigurationExitCode; 144 return kInvalidHostConfigurationExitCode;
145 } 145 }
146 if (tokens_pending) { 146 if (tokens_pending) {
147 // If we have an OAuth refresh token, then XmppSignalStrategy can't 147 // If we have an OAuth refresh token, then XmppSignalStrategy can't
148 // handle it directly, so refresh it asynchronously. A task will be 148 // handle it directly, so refresh it asynchronously. A task will be
149 // posted on the message loop to start watching the NAT policy when 149 // posted on the message loop to start watching the NAT policy when
150 // the access token is available. 150 // the access token is available.
151 //
152 // TODO(sergeyu): Move this code to SignalingConnector.
151 oauth_client_.Start(oauth_refresh_token_, this, 153 oauth_client_.Start(oauth_refresh_token_, this,
152 message_loop_.message_loop_proxy()); 154 message_loop_.message_loop_proxy());
153 } else { 155 } else {
154 StartWatchingNatPolicy(); 156 StartWatchingNatPolicy();
155 } 157 }
156 158
157 #if defined(OS_MACOSX) 159 #if defined(OS_MACOSX)
158 file_io_thread_.message_loop_proxy()->PostTask( 160 file_io_thread_.message_loop_proxy()->PostTask(
159 FROM_HERE, 161 FROM_HERE,
160 base::Bind(&HostProcess::ListenForConfigChanges, 162 base::Bind(&HostProcess::ListenForConfigChanges,
161 base::Unretained(this))); 163 base::Unretained(this)));
162 #endif 164 #endif
163 message_loop_.Run(); 165 message_loop_.Run();
164 166
165 return kSuccessExitCode; 167 return kSuccessExitCode;
166 } 168 }
167 169
168 // Overridden from OAuthClient::Delegate 170 // Overridden from OAuthClient::Delegate
169 virtual void OnRefreshTokenResponse(const std::string& access_token, 171 virtual void OnRefreshTokenResponse(const std::string& access_token,
170 int expires) OVERRIDE { 172 int expires) OVERRIDE {
171 xmpp_auth_token_ = access_token; 173 xmpp_auth_token_ = access_token;
172 // If there's already a signal strategy object, update it ready for the 174 // If there's already a signal strategy object, update it ready for the
173 // next time it calls Connect. If not, then this is the initial token 175 // next time it calls Connect. If not, then this is the initial token
174 // exchange, so proceed to the next stage of connection. 176 // exchange, so proceed to the next stage of connection.
175 if (signal_strategy_.get()) { 177 if (signal_strategy_.get()) {
176 signal_strategy_->SetAuthInfo(xmpp_login_, xmpp_auth_token_, 178 context_->network_message_loop()->PostTask(
177 xmpp_auth_service_); 179 FROM_HERE, base::Bind(
180 &XmppSignalStrategy::SetAuthInfo,
181 base::Unretained(signal_strategy_.get()),
Wez 2012/04/13 22:40:52 Looks like ChromotingContext gets torn down after
Jamie 2012/04/13 22:41:08 I think there's a race condition here. signal_stra
Sergey Ulanov 2012/04/13 23:43:50 Yes, I realize this may be unsafe, but we never ne
182 xmpp_login_, xmpp_auth_token_, xmpp_auth_service_));
178 } else { 183 } else {
179 StartWatchingNatPolicy(); 184 StartWatchingNatPolicy();
180 } 185 }
181 } 186 }
182 187
183 virtual void OnOAuthError() OVERRIDE { 188 virtual void OnOAuthError() OVERRIDE {
184 LOG(ERROR) << "OAuth: invalid credentials."; 189 LOG(ERROR) << "OAuth: invalid credentials.";
185 } 190 }
186 191
187 private: 192 private:
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 int CALLBACK WinMain(HINSTANCE instance, 414 int CALLBACK WinMain(HINSTANCE instance,
410 HINSTANCE previous_instance, 415 HINSTANCE previous_instance,
411 LPSTR command_line, 416 LPSTR command_line,
412 int show_command) { 417 int show_command) {
413 // CommandLine::Init() ignores the passed |argc| and |argv| on Windows getting 418 // CommandLine::Init() ignores the passed |argc| and |argv| on Windows getting
414 // the command line from GetCommandLineW(), so we can safely pass NULL here. 419 // the command line from GetCommandLineW(), so we can safely pass NULL here.
415 return main(0, NULL); 420 return main(0, NULL);
416 } 421 }
417 422
418 #endif 423 #endif
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698