mirror of
https://git.jami.net/savoirfairelinux/jami-daemon.git
synced 2025-08-12 22:09:25 +08:00
call: Add getCallDuration() method
If `duration_start_` is `time_point::min`, then when calculating the call's duration, there's an signed integer overflow which result in an enormous time duration. Signed-off-by: Olivier Dion <olivier.dion@savoirfairelinux.com> Change-Id: I3ad119ab0f79ef8e9c537d1879d628a29ceed4d7
This commit is contained in:

committed by
Adrien Béraud

parent
dc25cb3ea4
commit
f5eb0b47df
@ -125,12 +125,7 @@ Call::Call(const std::shared_ptr<Account>& account,
|
||||
duration_start_ = clock::now();
|
||||
else if (cnx_state == ConnectionState::DISCONNECTED && call_state == CallState::OVER) {
|
||||
if (auto jamiAccount = std::dynamic_pointer_cast<JamiAccount>(getAccount().lock())) {
|
||||
auto duration = duration_start_ == time_point::min()
|
||||
? 0
|
||||
: std::chrono::duration_cast<std::chrono::milliseconds>(
|
||||
clock::now() - duration_start_)
|
||||
.count();
|
||||
jamiAccount->addCallHistoryMessage(getPeerNumber(), duration);
|
||||
jamiAccount->addCallHistoryMessage(getPeerNumber(), getCallDuration().count());
|
||||
|
||||
monitor();
|
||||
}
|
||||
|
11
src/call.h
11
src/call.h
@ -301,6 +301,17 @@ public:
|
||||
return parent_ != nullptr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Call duration in milliseconds
|
||||
*/
|
||||
std::chrono::milliseconds getCallDuration() const
|
||||
{
|
||||
return duration_start_ == time_point::min()
|
||||
? std::chrono::milliseconds::zero()
|
||||
: std::chrono::duration_cast<std::chrono::milliseconds>(clock::now()
|
||||
- duration_start_);
|
||||
}
|
||||
|
||||
public: // media management
|
||||
virtual bool toggleRecording();
|
||||
|
||||
|
@ -2352,8 +2352,7 @@ SIPCall::monitor() const
|
||||
return;
|
||||
}
|
||||
JAMI_DBG("- Call %s with %s:", getCallId().c_str(), getPeerNumber().c_str());
|
||||
// TODO move in getCallDuration
|
||||
JAMI_DBG("\t- Duration: %s", dht::print_duration(clock::now() - duration_start_).c_str());
|
||||
JAMI_DBG("\t- Duration: %s", dht::print_duration(getCallDuration()).c_str());
|
||||
for (auto& mediaAttr : getMediaAttributeList())
|
||||
JAMI_DBG("\t- Media: %s", mediaAttr.toString(true).c_str());
|
||||
#ifdef ENABLE_VIDEO
|
||||
|
Reference in New Issue
Block a user