mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-04-17 20:08:28 +00:00
add try/catch to fileTransferProgressIndication callback in case of crash while downloading attachment
This commit is contained in:
parent
a4602236df
commit
164d8ab4b1
2 changed files with 24 additions and 13 deletions
|
|
@ -304,18 +304,25 @@ void ChatMessageCore::setSelf(QSharedPointer<ChatMessageCore> me) {
|
||||||
&ChatMessageModel::fileTransferProgressIndication,
|
&ChatMessageModel::fileTransferProgressIndication,
|
||||||
[this](const std::shared_ptr<linphone::ChatMessage> &message, const std::shared_ptr<linphone::Content> &content,
|
[this](const std::shared_ptr<linphone::ChatMessage> &message, const std::shared_ptr<linphone::Content> &content,
|
||||||
size_t offset, size_t total) {
|
size_t offset, size_t total) {
|
||||||
mChatMessageModelConnection->invokeToCore([this, content, offset, total] {
|
try {
|
||||||
auto it =
|
mChatMessageModelConnection->invokeToCore([this, content, offset, total] {
|
||||||
std::find_if(mChatMessageContentList.begin(), mChatMessageContentList.end(),
|
auto it =
|
||||||
[content](QSharedPointer<ChatMessageContentCore> item) {
|
std::find_if(mChatMessageContentList.begin(), mChatMessageContentList.end(),
|
||||||
return item->getContentModel()->getContent()->getName() == content->getName();
|
[content](QSharedPointer<ChatMessageContentCore> item) {
|
||||||
});
|
return item->getContentModel()->getContent()->getName() == content->getName();
|
||||||
if (it != mChatMessageContentList.end()) {
|
});
|
||||||
auto contentCore = mChatMessageContentList.at(std::distance(mChatMessageContentList.begin(), it));
|
if (it != mChatMessageContentList.end()) {
|
||||||
assert(contentCore);
|
auto contentCore =
|
||||||
contentCore->setFileOffset(offset);
|
mChatMessageContentList.at(std::distance(mChatMessageContentList.begin(), it));
|
||||||
}
|
assert(contentCore);
|
||||||
});
|
contentCore->setFileOffset(offset);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (const std::exception &ex) {
|
||||||
|
lFatal() << log()
|
||||||
|
.arg("Exception has been catch in signal fileTransferProgressIndication : %1")
|
||||||
|
.arg(ex.what());
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
mChatMessageModelConnection->makeConnectToModel(
|
mChatMessageModelConnection->makeConnectToModel(
|
||||||
|
|
|
||||||
|
|
@ -190,7 +190,11 @@ void ChatMessageModel::onFileTransferProgressIndication(const std::shared_ptr<li
|
||||||
const std::shared_ptr<linphone::Content> &content,
|
const std::shared_ptr<linphone::Content> &content,
|
||||||
size_t offset,
|
size_t offset,
|
||||||
size_t total) {
|
size_t total) {
|
||||||
emit fileTransferProgressIndication(message, content, offset, total);
|
try {
|
||||||
|
emit fileTransferProgressIndication(message, content, offset, total);
|
||||||
|
} catch (const std::exception &ex) {
|
||||||
|
lFatal() << log().arg("Exception has been catch in signal fileTransferProgressIndication : %1").arg(ex.what());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChatMessageModel::onParticipantImdnStateChanged(
|
void ChatMessageModel::onParticipantImdnStateChanged(
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue