Index: remoting/protocol/pepper_session.cc |
diff --git a/remoting/protocol/pepper_session.cc b/remoting/protocol/pepper_session.cc |
index ce56fd51432557c6e1cc472cffbb93f8477bee96..d9bab52050416f6ca06a3a99094b975809747f22 100644 |
--- a/remoting/protocol/pepper_session.cc |
+++ b/remoting/protocol/pepper_session.cc |
@@ -38,8 +38,6 @@ PepperSession::PepperSession(PepperSessionManager* session_manager) |
} |
PepperSession::~PepperSession() { |
- control_channel_socket_.reset(); |
- event_channel_socket_.reset(); |
STLDeleteContainerPairSecondPointers(channels_.begin(), channels_.end()); |
session_manager_->SessionDestroyed(this); |
} |
@@ -134,16 +132,6 @@ void PepperSession::CancelChannelCreation(const std::string& name) { |
} |
} |
-net::Socket* PepperSession::control_channel() { |
- DCHECK(CalledOnValidThread()); |
- return control_channel_socket_.get(); |
-} |
- |
-net::Socket* PepperSession::event_channel() { |
- DCHECK(CalledOnValidThread()); |
- return event_channel_socket_.get(); |
-} |
- |
const std::string& PepperSession::jid() { |
DCHECK(CalledOnValidThread()); |
return peer_jid_; |
@@ -199,8 +187,7 @@ const std::string& PepperSession::shared_secret() { |
void PepperSession::Close() { |
DCHECK(CalledOnValidThread()); |
- if (state_ == CONNECTING || state_ == CONNECTED || |
- state_ == CONNECTED_CHANNELS) { |
+ if (state_ == CONNECTING || state_ == CONNECTED) { |
// Send session-terminate message. |
JingleMessage message(peer_jid_, JingleMessage::SESSION_TERMINATE, |
session_id_); |
@@ -252,7 +239,6 @@ void PepperSession::OnAccept(const JingleMessage& message, |
return; |
} |
- CreateChannels(); |
SetState(CONNECTED); |
// In case there is transport information in the accept message. |
@@ -292,16 +278,16 @@ void PepperSession::OnTerminate(const JingleMessage& message, |
return; |
} |
- // TODO(sergeyu): We should return CHANNEL_CONNECTION_ERROR only in |
- // case when |message.reason| is set GENERAL_ERROR, but some legacy |
- // hosts may sent terminate messages with reason set to SUCCESS. |
if (state_ == CONNECTED) { |
- // Session was connected, but we failed to connect channels. |
- OnError(CHANNEL_CONNECTION_ERROR); |
+ if (message.reason == JingleMessage::GENERAL_ERROR) { |
+ OnError(CHANNEL_CONNECTION_ERROR); |
+ } else { |
+ CloseInternal(false); |
+ } |
return; |
} |
- CloseInternal(false); |
+ LOG(WARNING) << "Received unexpected session-terminate message."; |
} |
bool PepperSession::InitializeConfigFromDescription( |
@@ -369,40 +355,11 @@ void PepperSession::SendTransportInfo() { |
base::Unretained(this)))); |
} |
-void PepperSession::CreateChannels() { |
- CreateStreamChannel( |
- kControlChannelName, |
- base::Bind(&PepperSession::OnChannelConnected, |
- base::Unretained(this), &control_channel_socket_)); |
- CreateStreamChannel( |
- kEventChannelName, |
- base::Bind(&PepperSession::OnChannelConnected, |
- base::Unretained(this), &event_channel_socket_)); |
-} |
- |
-void PepperSession::OnChannelConnected( |
- scoped_ptr<net::Socket>* socket_container, |
- net::StreamSocket* socket) { |
- if (!socket) { |
- LOG(ERROR) << "Failed to connect control or events channel. " |
- << "Terminating connection"; |
- OnError(CHANNEL_CONNECTION_ERROR); |
- return; |
- } |
- |
- socket_container->reset(socket); |
- |
- if (control_channel_socket_.get() && event_channel_socket_.get()) |
- SetState(CONNECTED_CHANNELS); |
-} |
void PepperSession::CloseInternal(bool failed) { |
DCHECK(CalledOnValidThread()); |
if (state_ != FAILED && state_ != CLOSED) { |
- control_channel_socket_.reset(); |
- event_channel_socket_.reset(); |
- |
if (failed) |
SetState(FAILED); |
else |