diff options
author | perkj@webrtc.org <perkj@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2011-10-10 11:15:35 +0000 |
---|---|---|
committer | perkj@webrtc.org <perkj@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2011-10-10 11:15:35 +0000 |
commit | 73ba4160f6a7086595551e135b3a43868ead1a1e (patch) | |
tree | f4a7bde5689c298fd9cca9402b8ca38f85c5438d /third_party_mods | |
parent | 1843664f2af609e90a71e4a6bfc22bbb1728991e (diff) | |
download | webrtc-73ba4160f6a7086595551e135b3a43868ead1a1e.tar.gz |
Fix OnClose(socket, NO_ERROR) compile error on Linux.
Merge Peerconnection_client_dev with Peerconnection_client.
BUG=
TEST=
Review URL: http://webrtc-codereview.appspot.com/215002
git-svn-id: http://webrtc.googlecode.com/svn/trunk@720 4adac7df-926f-26a2-2b94-8c16560cd09d
Diffstat (limited to 'third_party_mods')
2 files changed, 22 insertions, 18 deletions
diff --git a/third_party_mods/libjingle/source/talk/examples/peerconnection_client/conductor.cc b/third_party_mods/libjingle/source/talk/examples/peerconnection_client/conductor.cc index 15877f5a1d..b08647bd08 100644 --- a/third_party_mods/libjingle/source/talk/examples/peerconnection_client/conductor.cc +++ b/third_party_mods/libjingle/source/talk/examples/peerconnection_client/conductor.cc @@ -305,26 +305,27 @@ void Conductor::UIThreadCallback(int msg_id, void* data) { case SEND_MESSAGE_TO_PEER: { LOG(INFO) << "SEND_MESSAGE_TO_PEER"; std::string* msg = reinterpret_cast<std::string*>(data); - if (client_->IsSendingMessage()) { - ASSERT(msg != NULL); + if (msg) { + // For convenience, we always run the message through the queue. + // This way we can be sure that messages are sent to the server + // in the same order they were signaled without much hassle. pending_messages_.push_back(msg); - } else { - if (!msg && !pending_messages_.empty()) { - msg = pending_messages_.front(); - pending_messages_.pop_front(); - } - if (msg) { - bool ok = client_->SendToPeer(peer_id_, *msg); - if (!ok && peer_id_ != -1) { - LOG(LS_ERROR) << "SendToPeer failed"; - DisconnectFromServer(); - } - delete msg; - } + } - if (!peer_connection_.get()) - peer_id_ = -1; + if (!pending_messages_.empty() && !client_->IsSendingMessage()) { + msg = pending_messages_.front(); + pending_messages_.pop_front(); + + if (!client_->SendToPeer(peer_id_, *msg) && peer_id_ != -1) { + LOG(LS_ERROR) << "SendToPeer failed"; + DisconnectFromServer(); + } + delete msg; } + + if (!peer_connection_.get()) + peer_id_ = -1; + break; } diff --git a/third_party_mods/libjingle/source/talk/examples/peerconnection_client/peer_connection_client.cc b/third_party_mods/libjingle/source/talk/examples/peerconnection_client/peer_connection_client.cc index 07e3c74671..3de4c311ef 100644 --- a/third_party_mods/libjingle/source/talk/examples/peerconnection_client/peer_connection_client.cc +++ b/third_party_mods/libjingle/source/talk/examples/peerconnection_client/peer_connection_client.cc @@ -289,6 +289,9 @@ bool PeerConnectionClient::ReadIntoBuffer(talk_base::AsyncSocket* socket, if (GetHeaderValue(*data, i, kConnection, &should_close) && should_close.compare("close") == 0) { socket->Close(); + // Since we closed the socket, there was no notification delivered + // to us. Compensate by letting ourselves know. + OnClose(socket, 0); } } else { // We haven't received everything. Just continue to accept data. @@ -472,7 +475,7 @@ void PeerConnectionClient::OnClose(talk_base::AsyncSocket* socket, int err) { callback_->OnMessageSent(err); } } else { - // Failed to connect to the server. + LOG(WARNING) << "Failed to connect to the server"; Close(); callback_->OnDisconnected(); } |