From cb0ea36bad6ea07e336c4a5d3ee2b00322893a8f Mon Sep 17 00:00:00 2001 From: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com> Date: Mon, 9 May 2016 13:10:38 -0400 Subject: [PATCH] ringdht: check IceTransport::start() returns IceTransport::start() return was not checked causing error not handled correctly, resulting by an unstable application. This patch adds the necessary checks and request the associated call to finish by a failure state when such error happens. Change-Id: I3f07f0b4d0cf0bbc0f7e3704c4cd0139b4c5e64e Tuleap: #662 --- src/ringdht/ringaccount.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/ringdht/ringaccount.cpp b/src/ringdht/ringaccount.cpp index a4439285bf..9f28d891c7 100644 --- a/src/ringdht/ringaccount.cpp +++ b/src/ringdht/ringaccount.cpp @@ -250,7 +250,10 @@ RingAccount::newOutgoingCall(const std::string& toUrl) std::string(msg.ice_data.cbegin(), msg.ice_data.cend()).c_str()); if (auto call = weak_call.lock()) call->setState(Call::ConnectionState::PROGRESSING); - ice->start(msg.ice_data); + if (!ice->start(msg.ice_data)) { + call->onFailure(); + return true; + } return false; } ); @@ -1005,7 +1008,10 @@ RingAccount::incomingCall(dht::IceCandidates&& msg) shared_this->dht_.cancelPut(shared_this->callKey_, vid); } ); - ice->start(msg.ice_data); + if (!ice->start(msg.ice_data)) { + call->onFailure(); + return; + } call->setPeerNumber(from); call->initRecFilename(from); { -- GitLab