jami-daemon issueshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues2020-11-09T17:10:15Zhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/341Still some ice nego failures2020-11-09T17:10:15ZSébastien BlinStill some ice nego failuresIteration 22Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/342Recording issues2021-02-03T20:42:51ZPierre LespagnolRecording issues* [x] Audio or video cut off too soon #40
* [ ] Client crashes #1218
* [ ] Recording stop after change of input #236
* [ ] Use acceleration for recording #237
* [ ] Jami daemon crash when streaming a recorded file #270* [x] Audio or video cut off too soon #40
* [ ] Client crashes #1218
* [ ] Recording stop after change of input #236
* [ ] Use acceleration for recording #237
* [ ] Jami daemon crash when streaming a recorded file #270Iteration 27Pierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/343multi device & file transfer.2020-11-10T20:48:59ZSébastien Blinmulti device & file transfer.# Scenario
+ A got 2 devices
+ B sends a file to A
# Expected
A should receives the file on both devices
# Current
One device is cut when the other one received the whole file# Scenario
+ A got 2 devices
+ B sends a file to A
# Expected
A should receives the file on both devices
# Current
One device is cut when the other one received the whole fileIteration 22Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/344Swarm: Design change. A member must accepts the invite to be in getMembers()2021-04-19T14:20:47ZSébastien BlinSwarm: Design change. A member must accepts the invite to be in getMembers()We need to avoid to send messages to someone that discard an invite. Also when removing a conversation, we should be sure that someone can sync, so accepted
Problem:
+ What happen when accepting/discarding an invite?
+ To discuss/solve:...We need to avoid to send messages to someone that discard an invite. Also when removing a conversation, we should be sure that someone can sync, so accepted
Problem:
+ What happen when accepting/discarding an invite?
+ To discuss/solve: The invite must go through, else, it will be problematic to detect invitations
+ Change tests for getMembers
+ Change tests for removeConversation
+ Add tests for accepts/discards
+ Test that the invite is received if not present at first
+ Update docSwarm-chatSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/345Swarm: Fetch validation2021-04-19T13:29:22ZSébastien BlinSwarm: Fetch validation+ Implement https://git.jami.net/savoirfairelinux/ring-project/wikis/Group-chat-feature-(design-draft)#validating-a-commit
+ Add tests
+ Avoid too big fetch
+ Rebase changes in wanted patches+ Implement https://git.jami.net/savoirfairelinux/ring-project/wikis/Group-chat-feature-(design-draft)#validating-a-commit
+ Add tests
+ Avoid too big fetch
+ Rebase changes in wanted patchesSwarm-chatSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/493account loading failed when build with clang 122021-04-01T14:53:49ZKateryna Kostiukaccount loading failed when build with clang 12Certificate parsing broken. Error: "Can't export CRL: ASN1 parser: Value is not valid." Happens when gnutls use libtasn1 build with clang 12.Certificate parsing broken. Error: "Can't export CRL: ASN1 parser: Value is not valid." Happens when gnutls use libtasn1 build with clang 12.Kateryna KostiukKateryna Kostiukhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/346Use outbound proxy server address when it is specified2021-02-22T21:57:03ZMing Rui ZhangUse outbound proxy server address when it is specifiedCurrently, the proxy address in the SIP client does not have an impact,
when the user specifies that, it should use that address as the destination addressCurrently, the proxy address in the SIP client does not have an impact,
when the user specifies that, it should use that address as the destination addressIteration 23Ming Rui ZhangMing Rui Zhanghttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/347Use keep alive mechanism to auto re-register sip account2020-11-19T16:31:25ZMing Rui ZhangUse keep alive mechanism to auto re-register sip accountIteration 23Ming Rui ZhangMing Rui Zhanghttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/348Swarm: change addMember logic2021-07-14T19:27:23ZSébastien BlinSwarm: change addMember logic+ getMembers return only members that joined, not pending invites
+ update doc
+ update code
+ update tests+ getMembers return only members that joined, not pending invites
+ update doc
+ update code
+ update testshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/349[Feature Request] Remotely control another participant’s shared screen2022-03-10T18:18:50Zovari[Feature Request] Remotely control another participant’s shared screenOnce participants are in a meeting, at the top right (tile view) or bottom left (thumbnail view) of the other participant menu, below **Kick out** and **Mute** you will see another option, **Remote control**.<br>
![image](/uploads/0fb526...Once participants are in a meeting, at the top right (tile view) or bottom left (thumbnail view) of the other participant menu, below **Kick out** and **Mute** you will see another option, **Remote control**.<br>
![image](/uploads/0fb526adb2d5bd623ed0898a84b357d3/image.png)<br>
The remote participant will get a request to approve the remote access request. Only then will it be possible to control the remote screen.<br>
[HowTo use Jitsi Meet to remotely control another participant’s shared screen](https://community.jitsi.org/t/howto-use-jitsi-meet-to-remotely-control-another-participants-shared-screen/48910)
![image](/uploads/015d1d68c0da0603ae2f8882729624a8/image.png)<br>
(https://meet.jit.si, accessed November 17th, 2020)
> This is usefull feature, that I have found only in zoom. It schould be avaliable. I am using it when teaching remotely to fix students code on their own computers. They have their own environment and I need to fix it right there at theirs computer. Zoom has it. I am fan of opensource, but this policy will go nowhere for jitsi. I will pass with opensource then.
https://community.jitsi.org/t/howto-use-jitsi-meet-to-remotely-control-another-participants-shared-screen/48910/8
>I tutor computer science online, and the ability to point at the relevant portion of source code, and to insert comments is essential. I realize it’s a potential security issue, but it would be nice if there was at least some way to opt-in. Jitsi is a really impressive software, but without this feature, for me, Zoom remains as the de facto standard.
https://community.jitsi.org/t/howto-use-jitsi-meet-to-remotely-control-another-participants-shared-screen/48910/9https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/350pulseaudio, to check: dring CPU increase with pulse if jack disconnected2021-07-09T20:58:21ZSébastien Blinpulseaudio, to check: dring CPU increase with pulse if jack disconnectedhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/351Swarm: cleanup current code2020-12-22T20:02:14ZSébastien BlinSwarm: cleanup current code# Done, to rebase
+ Avoid lock in testBanDevice if CPPUNIT_ASSERT(fileutils::isFile(bannedFile)); fails (just change bannedFile)
+ Add getUri() and getDeviceId() for JamiAccount to avoid multiple lookups + cleanup username_ usage => htt...# Done, to rebase
+ Avoid lock in testBanDevice if CPPUNIT_ASSERT(fileutils::isFile(bannedFile)); fails (just change bannedFile)
+ Add getUri() and getDeviceId() for JamiAccount to avoid multiple lookups + cleanup username_ usage => https://review.jami.net/c/ring-daemon/+/16424
+ Add test to assert that device certificate is there on commit
+ Add check to validate votes + commit messages (verif certificate)
+ invited create a directory instead a file
+ Some message sends to self. Avoid
+ valiadte too much commits
+ Disconnection during fetch => block the fetch, should be stopped
+ Some fetch blocked in
```
#0 0x00007ffff7a1c4e8 in pthread_cond_clockwait () from /lib64/libpthread.so.0
#1 0x0000000000671142 in std::condition_variable::__wait_until_impl<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (this=0x7ffe10017ce8, __lock=..., __atime=...) at /usr/include/c++/10/condition_variable:209
#2 0x000000000066d8e7 in std::condition_variable::wait_until<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (this=0x7ffe10017ce8, __lock=..., __atime=...) at /usr/include/c++/10/condition_variable:119
#3 0x000000000065fdb8 in std::condition_variable::wait_until<std::chrono::_V2::steady_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> >, jami::MultiplexedSocket::waitForData(const uint16_t&, std::chrono::milliseconds, s
td::error_code&) const::<lambda()> >(std::unique_lock<std::mutex> &, const std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1, 1000000000> > > &, struct {...}) (this=0x7ffe10017ce8, __lock=..
., __atime=..., __p=...) at /usr/include/c++/10/condition_variable:158
--Type <RET> for more, q to quit, c to continue without paging--
#4 0x000000000065fb76 in std::condition_variable::wait_for<long int, std::ratio<1, 1000>, jami::MultiplexedSocket::waitForData(const uint16_t&, std::chrono::milliseconds, std::error_code&) const::<lambda()> >(std::unique_lock<std::mutex
> &, const std::chrono::duration<long, std::ratio<1, 1000> > &, struct {...}) (this=0x7ffe10017ce8, __lock=..., __rtime=..., __p=...) at /usr/include/c++/10/condition_variable:185
#5 0x000000000065e959 in jami::MultiplexedSocket::waitForData (this=0x7ffe10008400, channel=@0x7ffe100092d8: 38876, timeout=..., ec=...) at multiplexed_socket.cpp:481
#6 0x000000000065f517 in jami::ChannelSocket::waitForData (this=0x7ffe10006850, timeout=..., ec=...) at multiplexed_socket.cpp:656
#7 0x000000000073cbb1 in P2PStreamRead (stream=0x7ffe04026910, buffer=0x7ffe0402e060 "0008NAK\n", buflen=65536, read=0x7ffe727f7a08) at gittransport.cpp:104
#8 0x0000000000bc0863 in git_smart.recv_cb ()
#9 0x0000000000bc2418 in recv_pkt ()
#10 0x0000000000bc32f1 in git_smart.download_pack ()
#11 0x0000000000ba8919 in git_remote_download ()
```
+ Add account id on logs (to rebase)
+ Queue for merge (convId, device)
+ test double fetch without common refs => should merge both side ok
(a & b same repo, a add commit, b too, then start daemon)
+ Handle 3 users
+ Add locks on conversations_ & pendingFetch & avoid lock on sendMessageNotification + avoid to lock on big operations
+ Avoid multiple parrallel fetch on different remots with same repository, this cause issues
+ Clean warnings
+ Fix segv for repository_ in conversationrepository_
+ improve getMembers()
+ Doc: verify in the doc that we do not add certificates in invited
+ end blockedSwarm-chatSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/352camera stays open after a call disconnects2020-11-23T22:14:20ZAdrien Béraudcamera stays open after a call disconnectsIteration 23Kateryna KostiukKateryna Kostiukhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/353Plug/Unplug the camera that is not the current rendering device should not tr...2021-08-20T16:09:39ZMing Rui ZhangPlug/Unplug the camera that is not the current rendering device should not trigger DecodingStopped signalhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/355ASAN issue on SDP2020-12-01T18:55:05ZSébastien BlinASAN issue on SDP```
=================================================================
==1914124==ERROR: AddressSanitizer: heap-use-after-free on address 0x61900074d460 at pc 0x55b7feb157df bp 0x7f2bedcfae40 sp 0x7f2bedcfae30
READ of size 4 at 0x61900074...```
=================================================================
==1914124==ERROR: AddressSanitizer: heap-use-after-free on address 0x61900074d460 at pc 0x55b7feb157df bp 0x7f2bedcfae40 sp 0x7f2bedcfae30
READ of size 4 at 0x61900074d460 thread T1
[mjpeg @ 0x6190002b4380] unable to decode APP fields: Invalid data found when processing input
[mjpeg @ 0x6190002b4380] unable to decode APP fields: Invalid data found when processing input
[mjpeg @ 0x6190002b4380] unable to decode APP fields: Invalid data found when processing input
[mjpeg @ 0x6190002b4380] unable to decode APP fields: Invalid data found when processing input
[mjpeg @ 0x6190002b4380] unable to decode APP fields: Invalid data found when processing input
#0 0x55b7feb157de in jami::Sdp::getIceCandidates[abi:cxx11](unsigned int) const /home/sblin/ring-project/daemon/src/sip/sdp.cpp:740
[mjpeg @ 0x6190002b4380] unable to decode APP fields: Invalid data found when processing input
#1 0x55b7feb7e12f in operator() /home/sblin/ring-project/daemon/src/sip/sipcall.cpp:1047
#2 0x55b7feb7e67e in jami::SIPCall::getAllRemoteCandidates() /home/sblin/ring-project/daemon/src/sip/sipcall.cpp:1060
#3 0x55b7feb82262 in operator() /home/sblin/ring-project/daemon/src/sip/sipcall.cpp:1346
#4 0x55b7feb8cf67 in _M_invoke /usr/include/c++/9/bits/std_function.h:285
#5 0x55b7fea7452f in std::function<bool ()>::operator()() const /usr/include/c++/9/bits/std_function.h:688
#6 0x55b7feafc80f in jami::RepeatedTask::run() /home/sblin/ring-project/daemon/src/scheduled_executor.h:76
#7 0x55b7feaf8c56 in operator() /home/sblin/ring-project/daemon/src/scheduled_executor.cpp:87
#8 0x55b7feafbf79 in _M_invoke /usr/include/c++/9/bits/std_function.h:300
#9 0x55b7fe56c807 in std::function<void ()>::operator()() const /usr/include/c++/9/bits/std_function.h:688
#10 0x55b7feafc6bb in jami::Task::run() /home/sblin/ring-project/daemon/src/scheduled_executor.h:55
#11 0x55b7feaf9160 in operator() /home/sblin/ring-project/daemon/src/scheduled_executor.cpp:98
#12 0x55b7feafb3d6 in _M_invoke /usr/include/c++/9/bits/std_function.h:300
#13 0x55b7fe56c807 in std::function<void ()>::operator()() const /usr/include/c++/9/bits/std_function.h:688
#14 0x55b7feaf99b9 in jami::ScheduledExecutor::loop() /home/sblin/ring-project/daemon/src/scheduled_executor.cpp:124
#15 0x55b7feaf7ed0 in operator() /home/sblin/ring-project/daemon/src/scheduled_executor.cpp:28
#16 0x55b7feafc5f9 in __invoke_impl<void, jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > /usr/include/c++/9/bits/invoke.h:60
#17 0x55b7feafc5ae in __invoke<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > /usr/include/c++/9/bits/invoke.h:95
#18 0x55b7feafc55b in _M_invoke<0> /usr/include/c++/9/thread:244
#19 0x55b7feafc531 in operator() /usr/include/c++/9/thread:251
#20 0x55b7feafc515 in _M_run /usr/include/c++/9/thread:195
#21 0x7f2bfc44bd83 (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xd6d83)
#22 0x7f2bfe3a9608 in start_thread /build/glibc-ZN95T4/glibc-2.31/nptl/pthread_create.c:477
#23 0x7f2bfc139292 in __clone (/lib/x86_64-linux-gnu/libc.so.6+0x122292)
0x61900074d460 is located 736 bytes inside of 1024-byte region [0x61900074d180,0x61900074d580)
freed by thread T1005 here:
#0 0x7f2bfece77cf in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10d7cf)
#1 0x55b7fef7f1d2 in pj_pool_destroy_int (/home/sblin/ring-project/daemon/bin/dring+0xead1d2)
previously allocated by thread T1005 here:
#0 0x7f2bfece7bc8 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10dbc8)
#1 0x55b7fef77d27 in default_block_alloc (/home/sblin/ring-project/daemon/bin/dring+0xea5d27)
Thread T1 created by T0 here:
#0 0x7f2bfec14805 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x3a805)
#1 0x7f2bfc44c048 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xd7048)
#2 0x55b7feaf8138 in jami::ScheduledExecutor::ScheduledExecutor() /home/sblin/ring-project/daemon/src/scheduled_executor.cpp:29
[mjpeg @ 0x6190002b4380] unable to decode APP fields: Invalid data found when processing input
#3 0x55b7fe9db7e6 in jami::Manager::ManagerPimpl::ManagerPimpl(jami::Manager&) /home/sblin/ring-project/daemon/src/manager.cpp:447
#4 0x55b7fe9def76 in jami::Manager::Manager() /home/sblin/ring-project/daemon/src/manager.cpp:726
#5 0x55b7fe9ded3d in jami::Manager::instance() /home/sblin/ring-project/daemon/src/manager.cpp:702
#6 0x55b7fe59a89d in DRing::init(DRing::InitFlag) /home/sblin/ring-project/daemon/src/ring_api.cpp:57
[mjpeg @ 0x6190002b4380] unable to decode APP fields: Invalid data found when processing input
#7 0x55b7fe473d0f in DBusClient::initLibrary(int) /home/sblin/ring-project/daemon/bin/dbus/dbusclient.cpp:245
#8 0x55b7fe468891 in DBusClient::DBusClient(int, bool) /home/sblin/ring-project/daemon/bin/dbus/dbusclient.cpp:108
#9 0x55b7fe467f9f in void __gnu_cxx::new_allocator<DBusClient>::construct<DBusClient, int&, bool&>(DBusClient*, int&, bool&) (/home/sblin/ring-project/daemon/bin/dring+0x395f9f)
#10 0x55b7fe467d63 in void std::allocator_traits<std::allocator<DBusClient> >::construct<DBusClient, int&, bool&>(std::allocator<DBusClient>&, DBusClient*, int&, bool&) (/home/sblin/ring-project/daemon/bin/dring+0x395d63)
#11 0x55b7fe467994 in std::_Sp_counted_ptr_inplace<DBusClient, std::allocator<DBusClient>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<int&, bool&>(std::allocator<DBusClient>, int&, bool&) (/home/sblin/ring-project/daemon/bin/dring+0x395994)
#12 0x55b7fe46735a in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<DBusClient, std::allocator<DBusClient>, int&, bool&>(DBusClient*&, std::_Sp_alloc_shared_tag<std::allocator<DBusClient> >, int&, bool&) (/home/sblin/ring-project/daemon/bin/dring+0x39535a)
#13 0x55b7fe466ead in std::__shared_ptr<DBusClient, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<DBusClient>, int&, bool&>(std::_Sp_alloc_shared_tag<std::allocator<DBusClient> >, int&, bool&) (/home/sblin/ring-project/daemon/bin/dring+0x394ead)
#14 0x55b7fe46636e in std::shared_ptr<DBusClient>::shared_ptr<std::allocator<DBusClient>, int&, bool&>(std::_Sp_alloc_shared_tag<std::allocator<DBusClient> >, int&, bool&) (/home/sblin/ring-project/daemon/bin/dring+0x39436e)
#15 0x55b7fe46589e in std::shared_ptr<DBusClient> std::allocate_shared<DBusClient, std::allocator<DBusClient>, int&, bool&>(std::allocator<DBusClient> const&, int&, bool&) (/home/sblin/ring-project/daemon/bin/dring+0x39389e)
#16 0x55b7fe464ece in std::shared_ptr<DBusClient> std::make_shared<DBusClient, int&, bool&>(int&, bool&) (/home/sblin/ring-project/daemon/bin/dring+0x392ece)
#17 0x55b7fe463c41 in main /home/sblin/ring-project/daemon/bin/main.cpp:218
#18 0x7f2bfc03e0b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
Thread T1005 created by T26 here:
#0 0x7f2bfec14805 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x3a805)
#1 0x7f2bfc44c048 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xd7048)
#2 0x55b7feaf8138 in jami::ScheduledExecutor::ScheduledExecutor() /home/sblin/ring-project/daemon/src/scheduled_executor.cpp:29
#3 0x55b7fee0255b in jami::tls::ChanneledSIPTransport::ChanneledSIPTransport(pjsip_endpoint*, int, std::shared_ptr<jami::ChannelSocket> const&, jami::IpAddr const&, jami::IpAddr const&, std::function<void ()>&&) /home/sblin/ring-project/daemon/src/jamidht/channeled_transport.cpp:46
[mjpeg @ 0x6190002b4380] unable to decode APP fields: Invalid data found when processing input
#4 0x55b7febc0133 in std::_MakeUniq<jami::tls::ChanneledSIPTransport>::__single_object std::make_unique<jami::tls::ChanneledSIPTransport, pjsip_endpoint*&, pjsip_transport_type_e&, std::shared_ptr<jami::ChannelSocket> const&, jami::IpAddr&, jami::IpAddr&, std::function<void ()> >(pjsip_endpoint*&, pjsip_transport_type_e&, std::shared_ptr<jami::ChannelSocket> const&, jami::IpAddr&, jami::IpAddr&, std::function<void ()>&&) /usr/include/c++/9/bits/unique_ptr.h:857
#5 0x55b7febbafd2 in jami::SipTransportBroker::getChanneledTransport(std::shared_ptr<jami::ChannelSocket> const&, std::function<void ()>&&) /home/sblin/ring-project/daemon/src/sip/siptransport.cpp:452
[mjpeg @ 0x6190002b4380] unable to decode APP fields: Invalid data found when processing input
#6 0x55b7fe6e2e01 in jami::JamiAccount::cacheSIPConnection(std::shared_ptr<jami::ChannelSocket>&&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, dht::Hash<20ul> const&) /home/sblin/ring-project/daemon/src/jamidht/jamiaccount.cpp:3776
#7 0x55b7fe6be1cd in operator() /home/sblin/ring-project/daemon/src/jamidht/jamiaccount.cpp:2229
#8 0x55b7fe6f809e in _M_invoke /usr/include/c++/9/bits/std_function.h:300
[mjpeg @ 0x6190002b4380] unable to decode APP fields: Invalid data found when processing input
#9 0x55b7fee32f69 in std::function<void (dht::Hash<20ul> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<jami::ChannelSocket>)>::operator()(dht::Hash<20ul> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<jami::ChannelSocket>) const /usr/include/c++/9/bits/std_function.h:688
#10 0x55b7fee1b62a in operator() /home/sblin/ring-project/daemon/src/jamidht/connectionmanager.cpp:774
#11 0x55b7fee233eb in _M_invoke /usr/include/c++/9/bits/std_function.h:300
[mjpeg @ 0x6190002b4380] unable to decode APP fields: Invalid data found when processing input
#12 0x55b7fe84fe28 in std::function<void (dht::Hash<20ul> const&, std::shared_ptr<jami::ChannelSocket> const&)>::operator()(dht::Hash<20ul> const&, std::shared_ptr<jami::ChannelSocket> const&) const /usr/include/c++/9/bits/std_function.h:688
#13 0x55b7fe841fe4 in operator() /home/sblin/ring-project/daemon/src/jamidht/multiplexed_socket.cpp:267
#14 0x55b7fe848508 in _M_invoke /usr/include/c++/9/bits/std_function.h:300
#15 0x55b7fefbd369 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<dht::ThreadPool::run(std::function<void ()>&&)::{lambda()#1}> > >::_M_run() (/home/sblin/ring-project/daemon/bin/dring+0xeeb369)
#16 0x7f2b8309c507 (<unknown module>)
Thread T26 created by T0 here:
#0 0x7f2bfec14805 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x3a805)
#1 0x7f2bfc44c048 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xd7048)
#2 0x62300004f8e7 (<unknown module>)
SUMMARY: AddressSanitizer: heap-use-after-free /home/sblin/ring-project/daemon/src/sip/sdp.cpp:740 in jami::Sdp::getIceCandidates[abi:cxx11](unsigned int) const
Shadow bytes around the buggy address:
0x0c32800e1a30: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c32800e1a40: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c32800e1a50: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c32800e1a60: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c32800e1a70: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
=>0x0c32800e1a80: fd fd fd fd fd fd fd fd fd fd fd fd[fd]fd fd fd
0x0c32800e1a90: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c32800e1aa0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c32800e1ab0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c32800e1ac0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c32800e1ad0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
Shadow gap: cc
==1914124==ABORTING
```Iteration 24Sébastien BlinMohamed ChibaniSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/356What are the license for ringtone files2021-11-19T21:46:34ZSahil DhimanWhat are the license for ringtone filesI would like to add the Jami [ringtone](https://git.jami.net/savoirfairelinux/ring-daemon/tree/master/ringtones) are nice. Could you specify what are license terms for it, if they're under CC license or not.
and thanks for the amazing ...I would like to add the Jami [ringtone](https://git.jami.net/savoirfairelinux/ring-daemon/tree/master/ringtones) are nice. Could you specify what are license terms for it, if they're under CC license or not.
and thanks for the amazing work and sorry for the noise.https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/357Conference - crash in call_factory.h2021-12-14T15:14:36ZMohamed ChibaniConference - crash in call_factory.hA crash occurred when hosting a conference. See the full back-trace in the attached file.
BuildL: Jami Daemon 9.6.0-2e35f9a59b
[daemon-crash-conference.txt](/uploads/abc03baf2e0e2f9748fb5f4079b9a3ad/daemon-crash-conference.txt)A crash occurred when hosting a conference. See the full back-trace in the attached file.
BuildL: Jami Daemon 9.6.0-2e35f9a59b
[daemon-crash-conference.txt](/uploads/abc03baf2e0e2f9748fb5f4079b9a3ad/daemon-crash-conference.txt)Backloghttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/358Swarm: add not contact member to conversation2020-12-22T20:02:05ZKateryna KostiukSwarm: add not contact member to conversationCurrently adding a contact that is not accepted contact request, as a member to conversation will fail with error "Could not add member because no certificate is found"Currently adding a contact that is not accepted contact request, as a member to conversation will fail with error "Could not add member because no certificate is found"Swarm-chatSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/359ASAN: double free on SIPCall::callAVStreams2020-11-27T18:37:46ZSébastien BlinASAN: double free on SIPCall::callAVStreams```
[1606406397.973|59233|manager.cpp :1657 ] [call:7407141028308407] Remove local audio
[1606406397.973|59233|ringbufferpool.cpp:242 ] Unbind call 7407141028308407 from all bound calls
==2090849==ERROR: AddressSanitizer: attempti...```
[1606406397.973|59233|manager.cpp :1657 ] [call:7407141028308407] Remove local audio
[1606406397.973|59233|ringbufferpool.cpp:242 ] Unbind call 7407141028308407 from all bound calls
==2090849==ERROR: AddressSanitizer: attempting double-free on 0x6030000dd2c0 in thread T1:
#0 0x7fc638ccd8df in operator delete(void*) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x1108df)
#1 0x55a41046a4f3 in std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >::~pair() /usr/include/c++/9/bits/stl_pair.h:208
#2 0x55a41046a517 in void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::destroy<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >*) /usr/include/c++/9/ext/new_allocator.h:153
#3 0x55a410468fce in void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > > >::destroy<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >&, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >*) /usr/include/c++/9/bits/alloc_traits.h:497
#4 0x55a410466566 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::_M_destroy_node(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >*) /usr/include/c++/9/bits/stl_tree.h:642
#5 0x55a4104630c2 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::_M_drop_node(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >*) /usr/include/c++/9/bits/stl_tree.h:650
#6 0x55a41045f2f1 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >*) /usr/include/c++/9/bits/stl_tree.h:1915
#7 0x55a410467e6b in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::clear() /usr/include/c++/9/bits/stl_tree.h:1266
#8 0x55a4104654d6 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::_M_erase_aux(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >, std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >) /usr/include/c++/9/bits/stl_tree.h:2522
#9 0x55a410460a16 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::erase(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (/home/sblin/ring-project/daemon/bin/dring+0xad0a16)
#10 0x55a41045d6d4 in std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::erase(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/9/bits/stl_map.h:1068
#11 0x55a4104463ca in jami::SIPCall::stopAllMedia() /home/sblin/ring-project/daemon/src/sip/sipcall.cpp:1255
#12 0x55a410440f5d in jami::SIPCall::peerHungup() /home/sblin/ring-project/daemon/src/sip/sipcall.cpp:837
#13 0x55a4102b6644 in jami::Manager::peerHungupCall(jami::Call&) /home/sblin/ring-project/daemon/src/manager.cpp:2063
#14 0x55a410442548 in operator() /home/sblin/ring-project/daemon/src/sip/sipcall.cpp:956
#15 0x55a41044d320 in operator() /home/sblin/ring-project/daemon/src/manager.h:964
#16 0x55a410454bf8 in _M_invoke /usr/include/c++/9/bits/std_function.h:300
#17 0x55a40fe2d717 in std::function<void ()>::operator()() const /usr/include/c++/9/bits/std_function.h:688
#18 0x55a4103bf469 in jami::ScheduledExecutor::loop() /home/sblin/ring-project/daemon/src/scheduled_executor.cpp:124
#19 0x55a4103bd980 in operator() /home/sblin/ring-project/daemon/src/scheduled_executor.cpp:28
#20 0x55a4103c20a9 in __invoke_impl<void, jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > /usr/include/c++/9/bits/invoke.h:60
#21 0x55a4103c205e in __invoke<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > /usr/include/c++/9/bits/invoke.h:95
#22 0x55a4103c200b in _M_invoke<0> /usr/include/c++/9/thread:244
#23 0x55a4103c1fe1 in operator() /usr/include/c++/9/thread:251
#24 0x55a4103c1fc5 in _M_run /usr/include/c++/9/thread:195
#25 0x7fc63642dd83 (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xd6d83)
#26 0x7fc63838c608 in start_thread /build/glibc-ZN95T4/glibc-2.31/nptl/pthread_create.c:477
#27 0x7fc63611b292 in __clone (/lib/x86_64-linux-gnu/libc.so.6+0x122292)
0x6030000dd2c0 is located 0 bytes inside of 18-byte region [0x6030000dd2c0,0x6030000dd2d2)
freed by thread T0 here:
#0 0x7fc638ccd8df in operator delete(void*) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x1108df)
#1 0x55a41046a4f3 in std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >::~pair() /usr/include/c++/9/bits/stl_pair.h:208
#2 0x55a41046a517 in void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::destroy<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >*) /usr/include/c++/9/ext/new_allocator.h:153
#3 0x55a410468fce in void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > > >::destroy<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >&, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >*) /usr/include/c++/9/bits/alloc_traits.h:497
#4 0x55a410466566 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::_M_destroy_node(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >*) /usr/include/c++/9/bits/stl_tree.h:642
#5 0x55a4104630c2 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::_M_drop_node(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >*) /usr/include/c++/9/bits/stl_tree.h:650
#6 0x55a41045f2f1 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >*) /usr/include/c++/9/bits/stl_tree.h:1915
#7 0x55a410467e6b in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::clear() /usr/include/c++/9/bits/stl_tree.h:1266
#8 0x55a4104654d6 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::_M_erase_aux(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >, std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >) /usr/include/c++/9/bits/stl_tree.h:2522
#9 0x55a410460a16 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::erase(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (/home/sblin/ring-project/daemon/bin/dring+0xad0a16)
#10 0x55a41045d6d4 in std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::erase(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/9/bits/stl_map.h:1068
#11 0x55a4104463ca in jami::SIPCall::stopAllMedia() /home/sblin/ring-project/daemon/src/sip/sipcall.cpp:1255
#12 0x55a410440422 in jami::SIPCall::hold() /home/sblin/ring-project/daemon/src/sip/sipcall.cpp:739
#13 0x55a4104403b4 in jami::SIPCall::onhold(std::function<void (bool)>&&) /home/sblin/ring-project/daemon/src/sip/sipcall.cpp:725
#14 0x55a4102a8c5e in jami::Manager::onHoldCall(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /home/sblin/ring-project/daemon/src/manager.cpp:1094
#15 0x55a40fe5c8d1 in DRing::hold(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /home/sblin/ring-project/daemon/src/client/callmanager.cpp:99
#16 0x55a40fdddeb1 in DBusCallManager::hold(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /home/sblin/ring-project/daemon/bin/dbus/dbuscallmanager.cpp:62
#17 0x55a40fde51ed in cx::ring::Ring::CallManager_adaptor::_hold_stub(DBus::CallMessage const&) /home/sblin/ring-project/daemon/bin/dbus/dbuscallmanager.adaptor.h:855
#18 0x55a40fdeec89 in DBus::Callback<cx::ring::Ring::CallManager_adaptor, DBus::Message, DBus::CallMessage const&>::call(DBus::CallMessage const&) const /home/sblin/ring-project/daemon/contrib/x86_64-linux-gnu/include/dbus-c++-1/dbus-c++/util.h:283
#19 0x55a40fe32cf9 in DBus::InterfaceAdaptor::dispatch_method(DBus::CallMessage const&) (/home/sblin/ring-project/daemon/bin/dring+0x4a2cf9)
#20 0x6150000130c7 (<unknown module>)
previously allocated by thread T1 here:
#0 0x7fc638ccc947 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10f947)
#1 0x55a40fed6453 in void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(char*, char*, std::forward_iterator_tag) /usr/include/c++/9/bits/basic_string.tcc:219
#2 0x55a41046cae9 in std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, 0ul>(std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&, std::tuple<>&, std::_Index_tuple<0ul>, std::_Index_tuple<>) /usr/include/c++/9/tuple:1674
#3 0x55a41046be1b in std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::piecewise_construct_t, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<>) (/home/sblin/ring-project/daemon/bin/dring+0xadbe1b)
#4 0x55a41046ae42 in void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::construct<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >*, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) (/home/sblin/ring-project/daemon/bin/dring+0xadae42)
#5 0x55a4104696db in void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > > >::construct<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >&, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >*, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) (/home/sblin/ring-project/daemon/bin/dring+0xad96db)
#6 0x55a410466bb9 in void std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::_M_construct_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >*, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) (/home/sblin/ring-project/daemon/bin/dring+0xad6bb9)
#7 0x55a4104636bf in std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) (/home/sblin/ring-project/daemon/bin/dring+0xad36bf)
#8 0x55a41045fa69 in std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&) (/home/sblin/ring-project/daemon/bin/dring+0xacfa69)
#9 0x55a41045cb13 in std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > > > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (/home/sblin/ring-project/daemon/bin/dring+0xaccb13)
#10 0x55a410439fc9 in jami::SIPCall::createCallAVStream(StreamData const&, jami::Observable<std::shared_ptr<DRing::MediaFrame> >&, std::shared_ptr<jami::PublishMapSubject<std::shared_ptr<DRing::MediaFrame>, AVFrame*> > const&) /home/sblin/ring-project/daemon/src/sip/sipcall.cpp:165
#11 0x55a410439be8 in jami::SIPCall::createCallAVStreams() /home/sblin/ring-project/daemon/src/sip/sipcall.cpp:154
#12 0x55a410445bdf in jami::SIPCall::startAllMedia() /home/sblin/ring-project/daemon/src/sip/sipcall.cpp:1227
#13 0x55a41044771d in operator() /home/sblin/ring-project/daemon/src/sip/sipcall.cpp:1382
#14 0x55a410452700 in _M_invoke /usr/include/c++/9/bits/std_function.h:285
#15 0x55a410339fdf in std::function<bool ()>::operator()() const /usr/include/c++/9/bits/std_function.h:688
#16 0x55a4103c22bf in jami::RepeatedTask::run() /home/sblin/ring-project/daemon/src/scheduled_executor.h:76
#17 0x55a4103be706 in operator() /home/sblin/ring-project/daemon/src/scheduled_executor.cpp:87
#18 0x55a4103c1a29 in _M_invoke /usr/include/c++/9/bits/std_function.h:300
#19 0x55a40fe2d717 in std::function<void ()>::operator()() const /usr/include/c++/9/bits/std_function.h:688
#20 0x55a4103c216b in jami::Task::run() /home/sblin/ring-project/daemon/src/scheduled_executor.h:55
#21 0x55a4103bec10 in operator() /home/sblin/ring-project/daemon/src/scheduled_executor.cpp:98
#22 0x55a4103c0e86 in _M_invoke /usr/include/c++/9/bits/std_function.h:300
#23 0x55a40fe2d717 in std::function<void ()>::operator()() const /usr/include/c++/9/bits/std_function.h:688
#24 0x55a4103bf469 in jami::ScheduledExecutor::loop() /home/sblin/ring-project/daemon/src/scheduled_executor.cpp:124
#25 0x55a4103bd980 in operator() /home/sblin/ring-project/daemon/src/scheduled_executor.cpp:28
#26 0x55a4103c20a9 in __invoke_impl<void, jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > /usr/include/c++/9/bits/invoke.h:60
#27 0x55a4103c205e in __invoke<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > /usr/include/c++/9/bits/invoke.h:95
#28 0x55a4103c200b in _M_invoke<0> /usr/include/c++/9/thread:244
#29 0x55a4103c1fe1 in operator() /usr/include/c++/9/thread:251
Thread T1 created by T0 here:
#0 0x7fc638bf7805 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x3a805)
#1 0x7fc63642e048 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xd7048)
#2 0x55a4103bdbe8 in jami::ScheduledExecutor::ScheduledExecutor() /home/sblin/ring-project/daemon/src/scheduled_executor.cpp:29
#3 0x55a4102a1296 in jami::Manager::ManagerPimpl::ManagerPimpl(jami::Manager&) /home/sblin/ring-project/daemon/src/manager.cpp:447
#4 0x55a4102a4a26 in jami::Manager::Manager() /home/sblin/ring-project/daemon/src/manager.cpp:726
#5 0x55a4102a47ed in jami::Manager::instance() /home/sblin/ring-project/daemon/src/manager.cpp:702
#6 0x55a40fe5b7ad in DRing::init(DRing::InitFlag) /home/sblin/ring-project/daemon/src/ring_api.cpp:57
#7 0x55a40fd34c1f in DBusClient::initLibrary(int) /home/sblin/ring-project/daemon/bin/dbus/dbusclient.cpp:245
#8 0x55a40fd297a1 in DBusClient::DBusClient(int, bool) /home/sblin/ring-project/daemon/bin/dbus/dbusclient.cpp:108
#9 0x55a40fd28eaf in void __gnu_cxx::new_allocator<DBusClient>::construct<DBusClient, int&, bool&>(DBusClient*, int&, bool&) (/home/sblin/ring-project/daemon/bin/dring+0x398eaf)
#10 0x55a40fd28c73 in void std::allocator_traits<std::allocator<DBusClient> >::construct<DBusClient, int&, bool&>(std::allocator<DBusClient>&, DBusClient*, int&, bool&) (/home/sblin/ring-project/daemon/bin/dring+0x398c73)
#11 0x55a40fd288a4 in std::_Sp_counted_ptr_inplace<DBusClient, std::allocator<DBusClient>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<int&, bool&>(std::allocator<DBusClient>, int&, bool&) (/home/sblin/ring-project/daemon/bin/dring+0x3988a4)
#12 0x55a40fd2826a in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<DBusClient, std::allocator<DBusClient>, int&, bool&>(DBusClient*&, std::_Sp_alloc_shared_tag<std::allocator<DBusClient> >, int&, bool&) (/home/sblin/ring-project/daemon/bin/dring+0x39826a)
#13 0x55a40fd27dbd in std::__shared_ptr<DBusClient, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<DBusClient>, int&, bool&>(std::_Sp_alloc_shared_tag<std::allocator<DBusClient> >, int&, bool&) (/home/sblin/ring-project/daemon/bin/dring+0x397dbd)
#14 0x55a40fd2727e in std::shared_ptr<DBusClient>::shared_ptr<std::allocator<DBusClient>, int&, bool&>(std::_Sp_alloc_shared_tag<std::allocator<DBusClient> >, int&, bool&) (/home/sblin/ring-project/daemon/bin/dring+0x39727e)
#15 0x55a40fd267ae in std::shared_ptr<DBusClient> std::allocate_shared<DBusClient, std::allocator<DBusClient>, int&, bool&>(std::allocator<DBusClient> const&, int&, bool&) (/home/sblin/ring-project/daemon/bin/dring+0x3967ae)
#16 0x55a40fd25dde in std::shared_ptr<DBusClient> std::make_shared<DBusClient, int&, bool&>(int&, bool&) (/home/sblin/ring-project/daemon/bin/dring+0x395dde)
#17 0x55a40fd24b51 in main /home/sblin/ring-project/daemon/bin/main.cpp:218
#18 0x7fc6360200b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
SUMMARY: AddressSanitizer: double-free (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x1108df) in operator delete(void*)
==2090849==ABORTING
```Iteration 24Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/360Swarm: Add forced 1:1 mode2021-04-19T13:29:46ZSébastien BlinSwarm: Add forced 1:1 mode# Done
+ Modify initial commits and store mode into
+ Modify addContact to send a conversationId into the request, addConversationMember doesn't add any conv request
+ Modify acceptContactRequest
+ Conversation addConversationMember() ...# Done
+ Modify initial commits and store mode into
+ Modify addContact to send a conversationId into the request, addConversationMember doesn't add any conv request
+ Modify acceptContactRequest
+ Conversation addConversationMember() refuse if already 1 member
+ Checks if one to one, only one member can be added
+ removeContact => remove linked conversation
+ Check mode when validating commits
+ Add docs for wanted swarm modes
+ Test 1:1 mode via addContact
+ Test getMode
+ Test addConversationMember doesn't work after first member
+ Test removeContact()
+ test banContact()
+ Test initial commit without mode
+ Test merge refused if more than one member in 1:1
+ merge intial commit and invite (and simplify getMembers for one one & fetch simplify validation)
+ docs conversationRequest (id, from, received)
+ Retry on TrustRequests
+ Add test addOfflineOneOne
+ Docs for one to one, add contact and the tricky scenario (A adds B, removes B, re-add B)Swarm-chatSébastien BlinSébastien Blin