jami-daemon issueshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues2020-12-01T18:55:05Zhttps://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/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/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/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/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/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/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/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/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/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/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/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/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/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/340Certificate verification and OCSP support on every platform2020-11-27T05:00:52ZAdrien BéraudCertificate verification and OCSP support on every platformIteration 24Adrien BéraudKateryna KostiukAndreas TraczykAdrien Béraudhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/339When the Jami android app uses a "DHT proxy" host-name different than the def...2020-11-25T15:59:10ZCarloWhen the Jami android app uses a "DHT proxy" host-name different than the default one it does not connect.Bug report
---------------
## Test environment
Android mobile setup:
- Ring version: 20190706-01
- Device model:
- Android version: 7.0
- What build you are using: Play Store
## Steps to reproduce
- Can you reproduce the...Bug report
---------------
## Test environment
Android mobile setup:
- Ring version: 20190706-01
- Device model:
- Android version: 7.0
- What build you are using: Play Store
## Steps to reproduce
- Can you reproduce the bug: yes at will.
The Jami app default/preset proxy server connection string is "dhtproxy.jami.net:[80-100]", with [80-100] being a range of possible service ports .
- Steps:
1. The current IP address of of dhtproxy.jami.net resolved with nslookup is 54.36.178.20 .
2. Enabling the use of "dhtproxy.jami.net:[80-100]" the jami account goes online correctly.
3. Making a traceroute --resolve-hostnames dhtproxy.jami.net, on a Linux host, I get at the end of the trace list a name alias of the same ip (54.36.178.20) "ns3102173.ip-54-36-178.eu". I can make the same using an app ("Ping & Net") directly on the mobile and I obtain the same results.
4. Using nslookup I verify that the two host names dhtproxy.jami.net and ns3102173.ip-54-36-178.eu resolve to the same ip : 54.36.178.20 . Also on the Android mobile I obtain the same results using the app "Ping & Net".
5. If on the android mobile I point Firefox to the url http://dhtproxy.jami.net or to http://ns3102173.ip-54-36-178.eu I get the same dhtproxy report JSON text: this means that the two host names can be used to open at least the same port 80 \`web page\`.
6. In the Jami application I substituted the dafault/preset host namedhtproxy.jami.net with it's alias ns3102173.ip-54-36-178.eu, I obtain the connection string "ns3102173.ip-54-36-178.eu:[80-100]"; doing so the Jami account no more connects. It seems quite that "the application" is not resolving the IP address for the new host name or it cuts out any other server name to use/resolve different than dhtproxy.jami.net.
7. Using directly the ip address in the connection string makes Jami to connect : "54.36.178.20:[80-100]" .
- Actual result: the Jami Android OS app does not connect to a "DHT proxy" string that has a literal hostname different than "dhtproxy.jami.net". It does connect if the "DHT proxy" is identified using its IP address .
- Expected result: the the Jami Android OS app should connect with any "DHT proxy" using in the connection string its DNS name to be resolved.
## Additional information
I encountered this bug verifying the connection to an OpenDHT (dhtnode) instance I setup; using this setup the Jami app connects to the "DHT proxy" from the Internet only when using the the IP host number in the connection string.
OpenDHT instance, compiled from source baseline version 1.10.0 (https://github.com/savoirfairelinux/opendht.git), running on Linux OS.Iteration 23Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/338Add DRing API to control conference moderators2020-11-12T15:45:46ZAdrien BéraudAdd DRing API to control conference moderatorsIteration 22Pierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/337allow moderators to hangup a participant2021-01-06T14:55:39ZAdrien Béraudallow moderators to hangup a participantIteration 25Pierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/336allow moderators to mute individual conference participants2021-01-22T20:35:33ZAdrien Béraudallow moderators to mute individual conference participantsIteration 26Pierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/335UPNP/NAT-PMP - add a handler for automatic port mapping provisioning2021-02-15T19:32:05ZMohamed ChibaniUPNP/NAT-PMP - add a handler for automatic port mapping provisioningAdd a handler for the provisioned port mappings (see #334 ). The handler must automatically maintain a pool of mapping ready for use whenever a call is started (outgoing/incoming). The handler must create new mappings if the number of av...Add a handler for the provisioned port mappings (see #334 ). The handler must automatically maintain a pool of mapping ready for use whenever a call is started (outgoing/incoming). The handler must create new mappings if the number of available mappings drops under a pre-defined limit, and must also delete unnecessary mappings when the number of mapping exceeds a defined max limit.Mohamed ChibaniMohamed Chibani