jami-libclient issueshttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues2018-09-12T15:21:28Zhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/388SIP: contact search/add bar filtering issues2018-09-12T15:21:28ZSIP: contact search/add bar filtering issuesI'm looking at using Ring as a SIP client and I seem to have been able to successfully install the 2018.6.6 version from the Gentoo overlay. However, I've been having a couple of problems with adding/searching contacts using the text inp...I'm looking at using Ring as a SIP client and I seem to have been able to successfully install the 2018.6.6 version from the Gentoo overlay. However, I've been having a couple of problems with adding/searching contacts using the text input at the top left of the interface:
* I can't seem to call any contacts with `*` in their numbers. This might not be an issue normally since normal phone numbers don't use that character, but my VoIP provider has voicemail set up as `*97` and there doesn't seem to be any way to call that number to check my voicemail using Ring. I even tried manually adding a conversation to the database using SQLite and still didn't see it in the list.
* I tried typing a `'` into the search box to see if that would let me use special characters like `*` and it crashed LRC with an SQL error. I suppose that there really aren't any phone numbers with `'` in them, but at the same time the fact that Ring uses SQL but doesn't seem to be properly escaping its queries is a major red flag for security-conscious users.Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/387Migrate account with ring.db should back-up conversations and avatars2019-01-27T15:01:47ZannaMigrate account with ring.db should back-up conversations and avatarsRunning Fedora 28 with latest repository update from
https://dl.ring.cx/ring-nightly/fedora_28/ring-nightly.repo
Exported my account to .gz. Saved /home/user/.config/ring & /home/user/.local/share/gnome-ring.
Finally I imported all of ...Running Fedora 28 with latest repository update from
https://dl.ring.cx/ring-nightly/fedora_28/ring-nightly.repo
Exported my account to .gz. Saved /home/user/.config/ring & /home/user/.local/share/gnome-ring.
Finally I imported all of them to my freshly installed new system.
My account & settings are there. My contacts & conversations are all gone.
I noticed that ring.db contains all of my messages -> checked with sqlite3 ~/.local/share/gnome-ring/ring.db
and /home/user/.local/share/gnome-ring/peer_profiles contains all of my contacts.
But nothing is displayed.
Any idea how to get my data visible again?Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/386Smartlist should not display INVALID items2018-09-11T19:29:29ZHugo LefeuvreSmartlist should not display INVALID itemsprofileInfo might have `type` field set to `INVALID`. In this case the smartlist should not display it.
This might allow user to create invalid conversations in some obscure circumstances.profileInfo might have `type` field set to `INVALID`. In this case the smartlist should not display it.
This might allow user to create invalid conversations in some obscure circumstances.Hugo LefeuvreHugo Lefeuvrehttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/385Exception chain during call termination2018-09-10T19:25:21ZHugo LefeuvreException chain during call terminationWhen a call terminates
1. `slotCallEnded()` (conversationmodel) is executed. Since false is passed to `getCallFromURI()` the call is not found and `std::out_of_range` is thrown. Consequently callId is set to `""`.
2. `selectConversation...When a call terminates
1. `slotCallEnded()` (conversationmodel) is executed. Since false is passed to `getCallFromURI()` the call is not found and `std::out_of_range` is thrown. Consequently callId is set to `""`.
2. `selectConversation()` is then executed. Since callId has been set to `""`, the newcallmodel fails to find the call and `std::out_of_range` is thrown. What happens is the same as without exception, namely `showChatView` signal is emitted.
There might be other exceptions thrown under the hood. I understand that the newcallmodel is designed to set the callId to `""` when the call finished, but this has to be done without exceptions.Hugo LefeuvreHugo Lefeuvrehttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/384Bad handling of URIs in smartlist2018-09-11T21:31:36ZHugo LefeuvreBad handling of URIs in smartlist**Affects**: latest LRC master
Any URI beginning with `ring:` is recognized as a valid RingID by the LRC. Some URIs beginning with `sip:` and followed by letters like `sip:pol` are recognized as valid RingID. This is a big bug.**Affects**: latest LRC master
Any URI beginning with `ring:` is recognized as a valid RingID by the LRC. Some URIs beginning with `sip:` and followed by letters like `sip:pol` are recognized as valid RingID. This is a big bug.Next major releaseHugo LefeuvreHugo Lefeuvrehttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/382Better handling of paused calls2022-01-07T21:30:58ZHugo LefeuvreBetter handling of paused calls**Currently**: User A and B are in a call. User A pauses the call. User A's screen becomes black while user B's screen freezes (it displays the last received frame).
This is ugly. We should be able to better represent a paused call on b...**Currently**: User A and B are in a call. User A pauses the call. User A's screen becomes black while user B's screen freezes (it displays the last received frame).
This is ugly. We should be able to better represent a paused call on both sides. All needed info is already provided by the daemon.Hugo LefeuvreHugo Lefeuvrehttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/381Merging two conferences is not possible / glitched2018-08-28T19:48:59ZHugo LefeuvreMerging two conferences is not possible / glitched```
void
NewCallModel::joinCalls(const std::string& callIdA, const std::string& callIdB) const
{
if (!hasCall(callIdA) || !hasCall(callIdB)) return;
auto& call1 = pimpl_->calls[callIdA];
auto& call2 = pimpl_->calls[callIdB];...```
void
NewCallModel::joinCalls(const std::string& callIdA, const std::string& callIdB) const
{
if (!hasCall(callIdA) || !hasCall(callIdB)) return;
auto& call1 = pimpl_->calls[callIdA];
auto& call2 = pimpl_->calls[callIdB];
if (call1->type == call::Type::CONFERENCE)
CallManager::instance().addParticipant(callIdB.c_str(), callIdA.c_str());
else if (call2->type == call::Type::CONFERENCE)
CallManager::instance().addParticipant(callIdA.c_str(), callIdB.c_str());
else if (call1->type == call::Type::CONFERENCE && call2->type == call::Type::CONFERENCE)
CallManager::instance().joinConference(callIdA.c_str(), callIdB.c_str());
else
CallManager::instance().joinParticipant(callIdA.c_str(), callIdB.c_str());
}
```
The third else if is never executed and should appear first in the if. This is a bug.Hugo LefeuvreHugo Lefeuvrehttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/380Useless call status in new call model2018-08-28T15:47:57ZHugo LefeuvreUseless call status in new call modelThe new call model contains some call status which appear to be useless, such as `call::Status::AUTO_ANSWERING`. We should probably get rid of them.The new call model contains some call status which appear to be useless, such as `call::Status::AUTO_ANSWERING`. We should probably get rid of them.Hugo LefeuvreHugo Lefeuvrehttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/379Better handle daemon call creation failure2018-08-28T15:28:21ZHugo LefeuvreBetter handle daemon call creation failureEven if the daemon fails to create a call, the new LRC's call model still creates an invalid call entry and adds it to `pimpl_->calls`.
This is a bug, in this case we should return an empty string and leave the map untouched.
https://g...Even if the daemon fails to create a call, the new LRC's call model still creates an invalid call entry and adds it to `pimpl_->calls`.
This is a bug, in this case we should return an empty string and leave the map untouched.
https://git.ring.cx/savoirfairelinux/ring-lrc/blob/master/src/newcallmodel.cpp#L178Hugo LefeuvreHugo Lefeuvrehttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/378lrc_fr_FR.ts is the same thing as lrc_fr.ts2022-12-08T01:15:39ZTineilrc_fr_FR.ts is the same thing as lrc_fr.tsHello,
it would be cool if lrc_fr.ts was copied as lrc_fr_FR.ts (changing line 1 appropriately).
Or at least leave the user change the language in settings, because now I'm still forced to tolerate "Missed outgoing call" instead of "...Hello,
it would be cool if lrc_fr.ts was copied as lrc_fr_FR.ts (changing line 1 appropriately).
Or at least leave the user change the language in settings, because now I'm still forced to tolerate "Missed outgoing call" instead of "Appel sortant raté".
Thank youhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/377segfault during trust request during interactionStatusUpdated signal2020-06-09T18:27:46ZHugo Lefeuvresegfault during trust request during interactionStatusUpdated signalThe GNOME client crashes during `interactionStatusUpdated` signal (right after opening the trust requests tab).
ASan stacktrace:
```
registered name found for unknown account ""
ASAN:SIGSEGV
============================================...The GNOME client crashes during `interactionStatusUpdated` signal (right after opening the trust requests tab).
ASan stacktrace:
```
registered name found for unknown account ""
ASAN:SIGSEGV
=================================================================
==7770==ERROR: AddressSanitizer: SEGV on unknown address 0x61104d0000be (pc 0x7fc4a74991ee bp 0x7ffe14708940 sp 0x7ffe147080c8 T0)
#0 0x7fc4a74991ed (/lib/x86_64-linux-gnu/libc.so.6+0x16f1ed)
#1 0x7fc4aead774e in memcmp (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x7774e)
#2 0x4bb737 in std::char_traits<char>::compare(char const*, char const*, unsigned long) /usr/include/c++/5/bits/char_traits.h:262
#3 0x4d951a in __gnu_cxx::__enable_if<std::__is_char<char>::__value, bool>::__type std::operator==<char>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/5/bits/basic_string.h:4914
#4 0x5ba700 in webkit_chat_container_ready(_ChatView*)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, lrc::api::interaction::Info)#2}::operator()(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, lrc::api::interaction::Info) const (/usr/bin/gnome-ring+0x5ba700)
#5 0x5bd8b8 in call /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:495
#6 0x5bd48d in call<QtPrivate::List<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, long unsigned int, const lrc::api::interaction::Info&>, void> /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:552
#7 0x5bd318 in impl /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:192
#8 0x7fc4ac5b7bae in QMetaObject::activate(QObject*, int, int, void**) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2b4bae)
#9 0x7fc4ae6c593b in lrc::api::ConversationModel::interactionStatusUpdated(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, lrc::api::interaction::Info const&) const (/usr/lib/libringclient.so.1.0.0+0x27493b)
#10 0x7fc4ae6c9469 in lrc::api::ConversationModel::setInteractionRead(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long const&) (/usr/lib/libringclient.so.1.0.0+0x278469)
#11 0x5ba3a9 in print_text_recording /home/hlefeuvre/Development/ring-client-gnome/src/chatview.cpp:487
#12 0x5ba9a0 in webkit_chat_container_ready /home/hlefeuvre/Development/ring-client-gnome/src/chatview.cpp:512
#13 0x5bc6f8 in build_chat_view /home/hlefeuvre/Development/ring-client-gnome/src/chatview.cpp:682
#14 0x5bc8c9 in chat_view_new /home/hlefeuvre/Development/ring-client-gnome/src/chatview.cpp:697
#15 0x516060 in displayChatView /home/hlefeuvre/Development/ring-client-gnome/src/ringmainwindow.cpp:1233
#16 0x5157a0 in changeView /home/hlefeuvre/Development/ring-client-gnome/src/ringmainwindow.cpp:1177
#17 0x52001e in slotShowChatView /home/hlefeuvre/Development/ring-client-gnome/src/ringmainwindow.cpp:1931
#18 0x519835 in (anonymous namespace)::details::CppImpl::updateLrc(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, lrc::api::conversation::Info)#8}::operator()(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, lrc::api::conversation::Info) const (/usr/bin/gnome-ring+0x519835)
#19 0x528004 in call /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:495
#20 0x5276dc in call<QtPrivate::List<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const lrc::api::conversation::Info&>, void> /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:552
#21 0x526f9a in impl /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:192
#22 0x7fc4ac5b7bae in QMetaObject::activate(QObject*, int, int, void**) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2b4bae)
#23 0x7fc4ae721df6 in lrc::api::BehaviorController::showChatView(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, lrc::api::conversation::Info const&) const (/usr/lib/libringclient.so.1.0.0+0x2d0df6)
#24 0x7fc4ae6c6d2c in lrc::api::ConversationModel::selectConversation(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const (/usr/lib/libringclient.so.1.0.0+0x275d2c)
#25 0x5cfaf1 in select_conversation /home/hlefeuvre/Development/ring-client-gnome/src/conversationsview.cpp:396
#26 0x7fc4acafa1d3 (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x101d3)
#27 0x7fc4acb149a5 in g_signal_emit_valist (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2a9a5)
#28 0x7fc4acb1508e in g_signal_emit (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2b08e)
#29 0x7fc4ade59fe3 (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x337fe3)
#30 0x7fc4ade5cab3 (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x33aab3)
#31 0x7fc4acafa1d3 (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x101d3)
#32 0x7fc4acb149a5 in g_signal_emit_valist (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2a9a5)
#33 0x7fc4acb1508e in g_signal_emit (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2b08e)
#34 0x7fc4ade76579 in gtk_widget_grab_focus (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x354579)
#35 0x7fc4ade5225c (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x33025c)
#36 0x7fc4add3552b (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x21352b)
#37 0x7fc4acaf9efe in g_closure_invoke (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0xfefe)
#38 0x7fc4acb0c56d (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2256d)
#39 0x7fc4acb147f8 in g_signal_emit_valist (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2a7f8)
#40 0x7fc4acb1508e in g_signal_emit (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2b08e)
#41 0x7fc4ade772c9 in gtk_widget_child_focus (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x3552c9)
#42 0x7fc4addb8bc7 (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x296bc7)
#43 0x7fc4add3552b (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x21352b)
#44 0x7fc4acaf9fa4 in g_closure_invoke (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0xffa4)
#45 0x7fc4acb0c56d (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2256d)
#46 0x7fc4acb147f8 in g_signal_emit_valist (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2a7f8)
#47 0x7fc4acb1508e in g_signal_emit (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2b08e)
#48 0x7fc4ade772c9 in gtk_widget_child_focus (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x3552c9)
#49 0x7fc4add67755 (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x245755)
#50 0x7fc4acaf9fa4 in g_closure_invoke (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0xffa4)
#51 0x7fc4acb0c56d (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2256d)
#52 0x7fc4acb14d5b in g_signal_emit_valist (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2ad5b)
#53 0x7fc4acb1508e in g_signal_emit (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2b08e)
#54 0x7fc4add624aa (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x2404aa)
#55 0x7fc4add35099 (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x213099)
#56 0x7fc4acafa1d3 (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x101d3)
#57 0x7fc4acb144b7 in g_signal_emit_valist (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2a4b7)
#58 0x7fc4acb1508e in g_signal_emit (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2b08e)
#59 0x7fc4ade72c3b (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x350c3b)
#60 0x7fc4add323bd (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x2103bd)
#61 0x7fc4add341bb in gtk_main_do_event (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x2121bb)
#62 0x7fc4ad8a1d91 (/usr/lib/x86_64-linux-gnu/libgdk-3.so.0+0x5ad91)
#63 0x7fc4ac823196 in g_main_context_dispatch (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x4a196)
#64 0x7fc4ac8233ef (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x4a3ef)
#65 0x7fc4ac82349b in g_main_context_iteration (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x4a49b)
#66 0x7fc4acdead7c in g_application_run (/usr/lib/x86_64-linux-gnu/libgio-2.0.so.0+0xadd7c)
#67 0x4b6df4 in main /home/hlefeuvre/Development/ring-client-gnome/src/main.cpp:37
#68 0x7fc4a734a82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
#69 0x4b6a48 in _start (/usr/bin/gnome-ring+0x4b6a48)
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV ??:0 ??
==7770==ABORTING
```Next major releasehttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/376newaccountmodel: setCredentials only if getCredentials is different2022-12-06T14:03:02ZSébastien Blinnewaccountmodel: setCredentials only if getCredentials is differentsetCredentials can be avoided if the credentials are correct. We should use getCredentials and compare with new values.setCredentials can be avoided if the credentials are correct. We should use getCredentials and compare with new values.Aline Gondim SantosAline Gondim Santoshttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/375SIP register fails: No username on digest authentication2018-07-31T14:34:17ZAlba MendezSIP register fails: No username on digest authenticationThis bug has been driving me mad for quite some time. I just installed Ring for Ubuntu 16.04 following official instructions, opened, set up a SIP account with hostname=10.139.205.101, username=10, password=test and it fails to register....This bug has been driving me mad for quite some time. I just installed Ring for Ubuntu 16.04 following official instructions, opened, set up a SIP account with hostname=10.139.205.101, username=10, password=test and it fails to register.
My Asterisk server sends:
From: "main" <sip:10@10.139.205.101>;tag=8005b703-201b-47e8-be88-03d7564a5ba8
To: "main" <sip:10@10.139.205.101>;tag=as3f952c47
...
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="0074f5d0"
And Ring then sends:
From: "main" <sip:10@10.139.205.101>;tag=8005b703-201b-47e8-be88-03d7564a5ba8
To: "main" <sip:10@10.139.205.101>
...
Authorization: Digest , realm="asterisk", nonce="0074f5d0", uri="sip:10.139.205.101", response="631415fcf3715907a48f11fec1e6a880", algorithm=MD5
i.e. notice the space and comma after `Digest`
ring-daemon version 2018-07-07. Bug could be on upstream, for some reason username is not set on `pjsip/src/pjsip/sip_auth_client.c` when adding the Authorization header, [header printed here](https://github.com/asterisk/pjproject/blob/106ec876a371b57bb3db8231a55cb5f368e6266b/pjsip/src/pjsip/sip_auth_msg.c#L73).Next major releaseSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/374newaccountmodel: still using old LRC for removing accounts2018-10-02T20:09:48ZHugo Lefeuvrenewaccountmodel: still using old LRC for removing accountsWe are still using the old lrc's `accountRemoved` signal to remove accounts. This is obviously not something we want to do and that should be handled 100% in the new LRC.We are still using the old lrc's `accountRemoved` signal to remove accounts. This is obviously not something we want to do and that should be handled 100% in the new LRC.Next major releaseHugo LefeuvreHugo Lefeuvrehttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/373newaccountmodel: race conditions and bad signal used for creating accounts2018-10-02T20:10:50ZHugo Lefeuvrenewaccountmodel: race conditions and bad signal used for creating accountsThe new account model is currently affected by two major issues:
1. The `accounts_` map is not protected again race conditions, in any kind of way. This should *really* be fixed.
2. The `accountsChanged` daemon signal is not used to det...The new account model is currently affected by two major issues:
1. The `accounts_` map is not protected again race conditions, in any kind of way. This should *really* be fixed.
2. The `accountsChanged` daemon signal is not used to detect changes in the accounts list. Instead we use `registrationStatusChanged` which works but is kind of inappropriate and may create various kind of weird issues when creating accounts offline.Next major releaseHugo LefeuvreHugo Lefeuvrehttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/372smartlist: contact list reordered when sending messages2018-08-06T18:35:06ZHugo Lefeuvresmartlist: contact list reordered when sending messages**Affects**: Latest LRC + GNU/Linux GNOME client
**How to reproduce**:
1. Set up a Ring account with several contacts where the conversation is empty (completely empty, clear history was called)
2. Open the topmost conversation and sen...**Affects**: Latest LRC + GNU/Linux GNOME client
**How to reproduce**:
1. Set up a Ring account with several contacts where the conversation is empty (completely empty, clear history was called)
2. Open the topmost conversation and send messages while looking at the conversations list: the order of empty conversations changes
This makes the smartlist blinky, we should really avoid that.Next major releaseSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/371segfault during call hangup2019-11-21T04:52:15ZHugo Lefeuvresegfault during call hangup**Affects**: latest LRC/GNOME client master
My GNU/Linux GNOME client crashed (segfault) during a call hangup.
**ASan stacktrace**:
```
(gnome-ring:3643): Gtk-WARNING **: Theme parsing error: <data>:1:652: Missing name of pseudo-class
...**Affects**: latest LRC/GNOME client master
My GNU/Linux GNOME client crashed (segfault) during a call hangup.
**ASan stacktrace**:
```
(gnome-ring:3643): Gtk-WARNING **: Theme parsing error: <data>:1:652: Missing name of pseudo-class
** (gnome-ring:3643): DEBUG: call has status Talking, hiding
** (gnome-ring:3643): DEBUG: call has status Talking, hiding
** (gnome-ring:3643): DEBUG: call has status Talking, hiding
slotCallStateChanged, call: 10000172967648819012 - state: FAILURE
slotCallStateChanged, call: 10000172967648819012 - state: OVER
Call State Changed for call "10000172967648819012" . New state : "FAILURE"
Call found Call(0x603000d50850) "Ringing"
State changing from "Ringing" to "Failed" on Call(0x603000d50850)
Starting call. callId : Call(0x603000d50850) ConfId: Call(0x603000d50850)
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
Calling stateChanged "FAILURE" -> 6 on call with state "Ringing" . Become "Failed"
Call State Changed for call "10000172967648819012" . New state : "OVER"
Call found Call(0x603000d50850) "Failed"
Origin and destination states are identical "Failed" "Failed" doing nothing Call(0x603000d50850)
Calling stateChanged "OVER" -> 7 on call with state "Failed" . Become "Failed"
Call State Changed for call "13304699374124811861" . New state : "CONNECTING"
slotCallStateChanged, call: 379597161990976675 - state: HUNGUP
ASAN:SIGSEGV
=================================================================
==3643==ERROR: AddressSanitizer: SEGV on unknown address 0x61105200008a (pc 0x7ff4518ac1ee bp 0x7ffeeb261610 sp 0x7ffeeb260d98 T0)
#0 0x7ff4518ac1ed (/lib/x86_64-linux-gnu/libc.so.6+0x16f1ed)
#1 0x7ff45960f74e in memcmp (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x7774e)
#2 0x4ba225 in std::char_traits<char>::compare(char const*, char const*, unsigned long) /usr/include/c++/5/bits/char_traits.h:262
#3 0x4d825e in __gnu_cxx::__enable_if<std::__is_char<char>::__value, bool>::__type std::operator==<char>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/5/bits/basic_string.h:4914
#4 0x5ad60c in webkit_chat_container_ready(_ChatView*)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, lrc::api::interaction::Info)#2}::operator()(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, lrc::api::interaction::Info) const (/usr/bin/gnome-ring+0x5ad60c)
#5 0x5b07ae in call /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:495
#6 0x5b0383 in call<QtPrivate::List<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, long unsigned int, const lrc::api::interaction::Info&>, void> /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:552
#7 0x5b020e in impl /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:192
#8 0x7ff4569cabae in QMetaObject::activate(QObject*, int, int, void**) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2b4bae)
#9 0x7ff458f6eaf8 in lrc::api::ConversationModel::interactionStatusUpdated(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, lrc::api::interaction::Info const&) const /home/hlefeuvre/Development/ring-lrc/build/api/moc_conversationmodel.cpp:238
#10 0x7ff458f66c10 in lrc::ConversationModelPimpl::addOrUpdateCallMessage(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /home/hlefeuvre/Development/ring-lrc/src/conversationmodel.cpp:1544
#11 0x7ff458f65ecf in lrc::ConversationModelPimpl::slotCallEnded(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /home/hlefeuvre/Development/ring-lrc/src/conversationmodel.cpp:1494
#12 0x7ff458f92849 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, void, void (lrc::ConversationModelPimpl::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>::call(void (lrc::ConversationModelPimpl::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), lrc::ConversationModelPimpl*, void**) /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:501
#13 0x7ff458f8d6b4 in void QtPrivate::FunctionPointer<void (lrc::ConversationModelPimpl::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>::call<QtPrivate::List<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, void>(void (lrc::ConversationModelPimpl::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), lrc::ConversationModelPimpl*, void**) (/usr/lib/libringclient.so.1.0.0+0x7296b4)
#14 0x7ff458f87046 in QtPrivate::QSlotObject<void (lrc::ConversationModelPimpl::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), QtPrivate::List<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:143
#15 0x7ff4569cabae in QMetaObject::activate(QObject*, int, int, void**) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2b4bae)
#16 0x7ff458f3e121 in lrc::api::NewCallModel::callEnded(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const /home/hlefeuvre/Development/ring-lrc/build/api/moc_newcallmodel.cpp:198
#17 0x7ff458f3c060 in lrc::NewCallModelPimpl::slotCallStateChanged(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int) /home/hlefeuvre/Development/ring-lrc/src/newcallmodel.cpp:422
#18 0x7ff458f4742d in QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1, 2>, QtPrivate::List<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int>, void, void (lrc::NewCallModelPimpl::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)>::call(void (lrc::NewCallModelPimpl::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int), lrc::NewCallModelPimpl*, void**) /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:501
#19 0x7ff458f45eda in void QtPrivate::FunctionPointer<void (lrc::NewCallModelPimpl::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)>::call<QtPrivate::List<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int>, void>(void (lrc::NewCallModelPimpl::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int), lrc::NewCallModelPimpl*, void**) /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:520
#20 0x7ff458f43e0e in QtPrivate::QSlotObject<void (lrc::NewCallModelPimpl::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int), QtPrivate::List<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:143
#21 0x7ff4569cabae in QMetaObject::activate(QObject*, int, int, void**) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2b4bae)
#22 0x7ff4590e1231 in lrc::CallbacksHandler::callStateChanged(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int) /home/hlefeuvre/Development/ring-lrc/build/moc_callbackshandler.cpp:618
#23 0x7ff459018cf4 in lrc::CallbacksHandler::slotCallStateChanged(QString const&, QString const&, int) /home/hlefeuvre/Development/ring-lrc/src/callbackshandler.cpp:232
#24 0x7ff4590214c5 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1, 2>, QtPrivate::List<QString const&, QString const&, int>, void, void (lrc::CallbacksHandler::*)(QString const&, QString const&, int)>::call(void (lrc::CallbacksHandler::*)(QString const&, QString const&, int), lrc::CallbacksHandler*, void**) /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:501
#25 0x7ff45901f58f in void QtPrivate::FunctionPointer<void (lrc::CallbacksHandler::*)(QString const&, QString const&, int)>::call<QtPrivate::List<QString const&, QString const&, int>, void>(void (lrc::CallbacksHandler::*)(QString const&, QString const&, int), lrc::CallbacksHandler*, void**) /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:520
#26 0x7ff45901e5ea in QtPrivate::QSlotObject<void (lrc::CallbacksHandler::*)(QString const&, QString const&, int), QtPrivate::List<QString const&, QString const&, int>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:143
#27 0x7ff4569cabae in QMetaObject::activate(QObject*, int, int, void**) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2b4bae)
#28 0x7ff4590bfac9 in CallManagerInterface::callStateChanged(QString const&, QString const&, int) /home/hlefeuvre/Development/ring-lrc/build/callmanager_dbus_interface.moc:656
#29 0x7ff4590bb3ee in CallManagerInterface::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) /home/hlefeuvre/Development/ring-lrc/build/callmanager_dbus_interface.moc:332
#30 0x7ff4590bf6ef in CallManagerInterface::qt_metacall(QMetaObject::Call, int, void**) /home/hlefeuvre/Development/ring-lrc/build/callmanager_dbus_interface.moc:628
#31 0x7ff45a69c912 (/usr/lib/x86_64-linux-gnu/libQt5DBus.so.5+0x20912)
#32 0x7ff4569cbc00 in QObject::event(QEvent*) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2b5c00)
#33 0x7ff45699c36b in QCoreApplication::notifyInternal(QObject*, QEvent*) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x28636b)
#34 0x7ff45699e785 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x288785)
#35 0x7ff4569f23c2 (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2dc3c2)
#36 0x7ff456c36196 in g_main_context_dispatch (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x4a196)
#37 0x7ff456c363ef (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x4a3ef)
#38 0x7ff456c3649b in g_main_context_iteration (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x4a49b)
#39 0x7ff4571fdd7c in g_application_run (/usr/lib/x86_64-linux-gnu/libgio-2.0.so.0+0xadd7c)
#40 0x4b5414 in main /home/hlefeuvre/Development/ring-client-gnome/src/main.cpp:37
#41 0x7ff45175d82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
#42 0x4b5068 in _start (/usr/bin/gnome-ring+0x4b5068)
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV ??:0 ??
==3643==ABORTING
```https://git.jami.net/savoirfairelinux/jami-libclient/-/issues/370Able to place calls with disabled account2018-07-10T14:32:41ZPhilippe GorleyAble to place calls with disabled accountSteps:
1. Create an account
2. Disable said account
3. Place a call
Expected result: No call is placed, get an error message
Actual result: Daemon prints "Account is not usable for calling", but client is searching for the peer.Steps:
1. Create an account
2. Disable said account
3. Place a call
Expected result: No call is placed, get an error message
Actual result: Daemon prints "Account is not usable for calling", but client is searching for the peer.Gnome 2018.07.15Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/369Save last used account2018-07-10T13:32:11ZSébastien BlinSave last used accountWhen we have multiple accounts, LRC keep always the same order for these accounts.
So if we want to use a lot the second account, each time we open Ring, we have to select the second account.
The daemon has the `setAccountsOrder` metho...When we have multiple accounts, LRC keep always the same order for these accounts.
So if we want to use a lot the second account, each time we open Ring, we have to select the second account.
The daemon has the `setAccountsOrder` method. New models should use this.Gnome 2018.07.15Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/368Database: AccountID should be used to identify account instead URI2018-12-05T18:17:03ZSébastien BlinDatabase: AccountID should be used to identify account instead URIFor example if the device certificate is removed the account ID is the only thing accessible to identify an account. So we should use this.For example if the device certificate is removed the account ID is the only thing accessible to identify an account. So we should use this.Swarm-chatKateryna KostiukKateryna Kostiuk