diff --git a/src/db/main-db.cpp b/src/db/main-db.cpp index 8869c4399..8ddd98748 100644 --- a/src/db/main-db.cpp +++ b/src/db/main-db.cpp @@ -601,7 +601,11 @@ shared_ptr MainDbPrivate::selectConferenceChatMessageEvent ( chatMessage->setIsSecured(bool(row.get(9))); ChatMessagePrivate *dChatMessage = chatMessage->getPrivate(); - dChatMessage->setState(ChatMessage::State(row.get(7)), true); + ChatMessage::State messageState = (ChatMessage::State) row.get(7); + // This is necessary if linphone has crashed while sending a message. It will set the correct state so the user can resend it. + if (messageState == ChatMessage::State::Idle || messageState == ChatMessage::State::InProgress) + messageState = ChatMessage::State::NotDelivered; + dChatMessage->setState(messageState, true); dChatMessage->forceFromAddress(IdentityAddress(row.get(3))); dChatMessage->forceToAddress(IdentityAddress(row.get(4)));