| Index: remoting/protocol/pepper_transport_socket_adapter.cc
|
| diff --git a/remoting/protocol/pepper_transport_socket_adapter.cc b/remoting/protocol/pepper_transport_socket_adapter.cc
|
| index 6acb8e3007b0b33811b1a43d24e2ed5a17a2988f..36a170e2b5a6b085a5843e5d7d1384f71a2de754 100644
|
| --- a/remoting/protocol/pepper_transport_socket_adapter.cc
|
| +++ b/remoting/protocol/pepper_transport_socket_adapter.cc
|
| @@ -129,6 +129,29 @@ int PepperTransportSocketAdapter::Connect(net::OldCompletionCallback* callback)
|
| if (!transport_.get())
|
| return net::ERR_UNEXPECTED;
|
|
|
| + old_connect_callback_ = callback;
|
| +
|
| + // This will return false when GetNextAddress() returns an
|
| + // error. This helps to detect when the P2P Transport API is not
|
| + // supported.
|
| + int result = ProcessCandidates();
|
| + if (result != net::OK)
|
| + return result;
|
| +
|
| + result = transport_->Connect(
|
| + callback_factory_.NewRequiredCallback(
|
| + &PepperTransportSocketAdapter::OnConnect));
|
| + DCHECK_EQ(result, PP_OK_COMPLETIONPENDING);
|
| +
|
| + return net::ERR_IO_PENDING;
|
| +}
|
| +int PepperTransportSocketAdapter::Connect(
|
| + const net::CompletionCallback& callback) {
|
| + DCHECK(CalledOnValidThread());
|
| +
|
| + if (!transport_.get())
|
| + return net::ERR_UNEXPECTED;
|
| +
|
| connect_callback_ = callback;
|
|
|
| // This will return false when GetNextAddress() returns an
|
| @@ -254,14 +277,20 @@ void PepperTransportSocketAdapter::OnNextAddress(int32_t result) {
|
|
|
| void PepperTransportSocketAdapter::OnConnect(int result) {
|
| DCHECK(CalledOnValidThread());
|
| - DCHECK(connect_callback_);
|
| + DCHECK(old_connect_callback_ || !connect_callback_.is_null());
|
|
|
| if (result == PP_OK)
|
| connected_ = true;
|
|
|
| - net::OldCompletionCallback* callback = connect_callback_;
|
| - connect_callback_ = NULL;
|
| - callback->Run(PPErrorToNetError(result));
|
| + if (old_connect_callback_) {
|
| + net::OldCompletionCallback* callback = old_connect_callback_;
|
| + old_connect_callback_ = NULL;
|
| + callback->Run(PPErrorToNetError(result));
|
| + } else {
|
| + net::CompletionCallback callback = connect_callback_;
|
| + connect_callback_.Reset();
|
| + callback.Run(PPErrorToNetError(result));
|
| + }
|
| }
|
|
|
| void PepperTransportSocketAdapter::OnRead(int32_t result) {
|
|
|