aboutsummaryrefslogtreecommitdiff
path: root/third_party_mods
diff options
context:
space:
mode:
authorperkj@webrtc.org <perkj@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2011-10-10 11:15:35 +0000
committerperkj@webrtc.org <perkj@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2011-10-10 11:15:35 +0000
commit73ba4160f6a7086595551e135b3a43868ead1a1e (patch)
treef4a7bde5689c298fd9cca9402b8ca38f85c5438d /third_party_mods
parent1843664f2af609e90a71e4a6bfc22bbb1728991e (diff)
downloadwebrtc-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')
-rw-r--r--third_party_mods/libjingle/source/talk/examples/peerconnection_client/conductor.cc35
-rw-r--r--third_party_mods/libjingle/source/talk/examples/peerconnection_client/peer_connection_client.cc5
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();
}