jami-daemon issueshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues2023-12-19T22:55:35Zhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/929Need some help with videoWriter in debug_utils.h2023-12-19T22:55:35ZJingwei ZhangNeed some help with videoWriter in debug_utils.hJust need a exampke of how to dump the decoded video in jami daemon. the generated docuements are not helping at all.
Thanks a lotJust need a exampke of how to dump the decoded video in jami daemon. the generated docuements are not helping at all.
Thanks a lothttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/928heap-use-after-free in turn_sock (TCP)2024-01-09T16:26:58ZSébastien Blinheap-use-after-free in turn_sock (TCP)### Describe the bug
No precise scenario, but ASAN crash detected randomly:
```
=================================================================
==15049==ERROR: AddressSanitizer: heap-use-after-free on address 0x0002b00b5648 at pc 0x0...### Describe the bug
No precise scenario, but ASAN crash detected randomly:
```
=================================================================
==15049==ERROR: AddressSanitizer: heap-use-after-free on address 0x0002b00b5648 at pc 0x0001056f5610 bp 0x00029dd327b0 sp 0x00029dd327a8
#0 0x1056f560c in stun_on_request_complete+0xc8c (Jami:arm64+0x102a8560c)
#1 0x1056ea7f4 in stun_tsx_on_complete+0x2a8 (Jami:arm64+0x102a7a7f4)
#2 0x1056f2498 in retransmit_timer_callback+0x12c (Jami:arm64+0x102a82498)
#3 0x105685fec in pj_timer_heap_poll+0x468 (Jami:arm64+0x102a15fec)
#4 0x104a4acbc in dhtnet::IceTransport::Impl::handleEvents(unsigned int)+0x110 (Jami:arm64+0x101ddacbc)
#5 0x104a65a5c in void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, dhtnet::IceTransport::Impl::initIceInstance(dhtnet::IceTransportOptions const&)::$_6>>(void*)+0x154 (Jami:arm64+0x101df5a5c)
#6 0x186caf030 in _pthread_start+0x84 (libsystem_pthread.dylib:arm64e+0x7030)
#7 0x186ca9e38 in thread_start+0x4 (libsystem_pthread.dylib:arm64e+0x1e38)
0x0002b00b5648 is located 200 bytes inside of 256-byte region [0x0002b00b5580,0x0002b00b5680)
freed by thread T1102 here:
#0 0x111b5ace0 in wrap_free+0x98 (libclang_rt.asan_osx_dynamic.dylib:arm64e+0x52ce0)
#1 0x1056738d4 in pj_pool_destroy_int+0xbc (Jami:arm64+0x102a038d4)
#2 0x105674788 in cpool_release_pool+0xec (Jami:arm64+0x102a04788)
#3 0x105704130 in dataconn_on_data_read+0x180 (Jami:arm64+0x102a94130)
#4 0x105663b48 in ioqueue_on_read_complete+0x39c (Jami:arm64+0x1029f3b48)
#5 0x1056537a4 in ioqueue_dispatch_read_event+0x700 (Jami:arm64+0x1029e37a4)
#6 0x1056587bc in pj_ioqueue_poll+0x900 (Jami:arm64+0x1029e87bc)
#7 0x104a4ad9c in dhtnet::IceTransport::Impl::handleEvents(unsigned int)+0x1f0 (Jami:arm64+0x101ddad9c)
#8 0x104a65a5c in void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, dhtnet::IceTransport::Impl::initIceInstance(dhtnet::IceTransportOptions const&)::$_6>>(void*)+0x154 (Jami:arm64+0x101df5a5c)
#9 0x186caf030 in _pthread_start+0x84 (libsystem_pthread.dylib:arm64e+0x7030)
#10 0x186ca9e38 in thread_start+0x4 (libsystem_pthread.dylib:arm64e+0x1e38)
previously allocated by thread T1102 here:
#0 0x111b5aba4 in wrap_malloc+0x94 (libclang_rt.asan_osx_dynamic.dylib:arm64e+0x52ba4)
#1 0x105660234 in default_block_alloc+0x50 (Jami:arm64+0x1029f0234)
#2 0x105672d68 in pj_pool_allocate_find+0x110 (Jami:arm64+0x102a02d68)
#3 0x105672f94 in pj_pool_calloc+0x7c (Jami:arm64+0x102a02f94)
#4 0x1056633a4 in pj_activesock_create+0x254 (Jami:arm64+0x1029f33a4)
#5 0x105700f6c in turn_on_connection_attempt+0x9d0 (Jami:arm64+0x102a90f6c)
#6 0x1056f59e8 in stun_on_rx_indication+0xe4 (Jami:arm64+0x102a859e8)
#7 0x1056e9914 in pj_stun_session_on_rx_pkt+0x69c (Jami:arm64+0x102a79914)
#8 0x1056fb5e4 in pj_turn_session_on_rx_pkt2+0x1ec (Jami:arm64+0x102a8b5e4)
#9 0x1056fb2f8 in pj_turn_session_on_rx_pkt+0x10c (Jami:arm64+0x102a8b2f8)
#10 0x105703930 in on_data_read_asock+0x468 (Jami:arm64+0x102a93930)
#11 0x105663a5c in ioqueue_on_read_complete+0x2b0 (Jami:arm64+0x1029f3a5c)
#12 0x1056537a4 in ioqueue_dispatch_read_event+0x700 (Jami:arm64+0x1029e37a4)
#13 0x1056587bc in pj_ioqueue_poll+0x900 (Jami:arm64+0x1029e87bc)
#14 0x104a4ad9c in dhtnet::IceTransport::Impl::handleEvents(unsigned int)+0x1f0 (Jami:arm64+0x101ddad9c)
#15 0x104a65a5c in void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, dhtnet::IceTransport::Impl::initIceInstance(dhtnet::IceTransportOptions const&)::$_6>>(void*)+0x154 (Jami:arm64+0x101df5a5c)
#16 0x186caf030 in _pthread_start+0x84 (libsystem_pthread.dylib:arm64e+0x7030)
#17 0x186ca9e38 in thread_start+0x4 (libsystem_pthread.dylib:arm64e+0x1e38)
```
What I see:
+ `turn_sock.c:dataconn_on_data_read` is called with status = 120054 & size = 0
+ This causes a dataconn_cleanup on the connection
+ `turn_session.c:stun_on_request_complete` is then called with method = PJ_STUN_CONNECTION_BIND_METHOD & status = 370004
I guess dataconn_cleanup is called again in turn_on_connection_bind_status but I'm not sure yet.
### Steps to reproduce
None detected yet
### PJSIP version
2.13
### Context
+ macOS, but I guess all platforms should get the same bug
+ Custom patched version, but turn_session/turn_sock should be the same.
### Log, call stack, etc
```shell
cf first part
```
https://github.com/pjsip/pjproject/issues/3776Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/927Android: Same contact multiple times (multi device related?)2023-12-16T18:01:12ZElysAndroid: Same contact multiple times (multi device related?)Desktop (Beta): 202312142117
Android (20231213-01)
Steps to reproduce:
- You are using the same Jami account ("Jamiaccount1") on different devices - and you always have your own Jami account in the contact list (so you can make calls /...Desktop (Beta): 202312142117
Android (20231213-01)
Steps to reproduce:
- You are using the same Jami account ("Jamiaccount1") on different devices - and you always have your own Jami account in the contact list (so you can make calls / send messages "Jamiaccount1" device 1 <-> "Jamiaccount1" device 2)
- - only the desktop device 1 also has another own account "Jamiaccount2": "Jamiaccount1" is in the contact list of "Jamiaccount2" (and the other direction); however "Jamiaccount2" account does NOT have it's own account in the contact list?
- BUT you always use the same two devices (desktop and android phone) for weeks
- Now you are using a different desktop device (3) that only uses "Jamiaccount2" (device 3)contact ("Jamiaccount1") is already in the contact list of "Jamiaccount2" (device 1,2) because you've added "Jamiaccount2" on another device
- Once you open Jami on desktop - Jami on Android will create another same contact of "Jamiaccount1" and if you tap the duplicated contact the chatview will stuck at "Downloading conversation from peer" (even if you restart Jami on Android)
Screenshot (of the Android device)
![Jamitwice1](/uploads/32a667c3f81374effdc83094bcd1c85c/Jamitwice1.png)
Detail:
![Jamitwice2](/uploads/456f273bf0080e14b7b569cdb820656e/Jamitwice2.png)https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/926Crash in OpenSSL (JAMS deletion) - heap use after free2023-12-05T21:03:14ZSébastien BlinCrash in OpenSSL (JAMS deletion) - heap use after free```
#0 0x7f00b503a396 in __interceptor_memcpy ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:827
#1 0x7f00a10e1361 (/lib/x86_64-linux-gnu/libcrypto.so.3+0xe1361)
#2 0x7f00a10d234a (/lib/x86_...```
#0 0x7f00b503a396 in __interceptor_memcpy ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:827
#1 0x7f00a10e1361 (/lib/x86_64-linux-gnu/libcrypto.so.3+0xe1361)
#2 0x7f00a10d234a (/lib/x86_64-linux-gnu/libcrypto.so.3+0xd234a)
#3 0x7f00a10d5344 (/lib/x86_64-linux-gnu/libcrypto.so.3+0xd5344)
#4 0x7f00a10d5b3c in BIO_read_ex (/lib/x86_64-linux-gnu/libcrypto.so.3+0xd5b3c)
#5 0x7f00a10d5344 (/lib/x86_64-linux-gnu/libcrypto.so.3+0xd5344)
#6 0x7f00a10d54c6 in BIO_read (/lib/x86_64-linux-gnu/libcrypto.so.3+0xd54c6)
#7 0x7f00a10bc059 in asn1_d2i_read_bio (/lib/x86_64-linux-gnu/libcrypto.so.3+0xbc059)
#8 0x7f00a1268716 (/lib/x86_64-linux-gnu/libcrypto.so.3+0x268716)
#9 0x7f00a125aa62 (/lib/x86_64-linux-gnu/libcrypto.so.3+0x25aa62)
#10 0x7f00a11697ba (/lib/x86_64-linux-gnu/libcrypto.so.3+0x1697ba)
#11 0x7f00a1169a90 in OSSL_DECODER_from_bio (/lib/x86_64-linux-gnu/libcrypto.so.3+0x169a90)
#12 0x7f00a1169dbd in OSSL_DECODER_from_data (/lib/x86_64-linux-gnu/libcrypto.so.3+0x169dbd)
#13 0x7f00a123fae3 (/lib/x86_64-linux-gnu/libcrypto.so.3+0x23fae3)
#14 0x7f00a10ceb9a (/lib/x86_64-linux-gnu/libcrypto.so.3+0xceb9a)
#15 0x7f00a10d03e7 (/lib/x86_64-linux-gnu/libcrypto.so.3+0xd03e7)
#16 0x7f00a10ced18 (/lib/x86_64-linux-gnu/libcrypto.so.3+0xced18)
#17 0x7f00a10d03e7 (/lib/x86_64-linux-gnu/libcrypto.so.3+0xd03e7)
#18 0x7f00a10ced18 (/lib/x86_64-linux-gnu/libcrypto.so.3+0xced18)
#19 0x7f00a10cf492 in ASN1_item_d2i_ex (/lib/x86_64-linux-gnu/libcrypto.so.3+0xcf492)
#20 0x7f00a15e8132 (/lib/x86_64-linux-gnu/libssl.so.3+0x67132)
#21 0x7f00a15e4a04 (/lib/x86_64-linux-gnu/libssl.so.3+0x63a04)
#22 0x7f00a15e6607 (/lib/x86_64-linux-gnu/libssl.so.3+0x65607)
#23 0x7f00a5176230 in asio::ssl::detail::engine::perform(int (asio::ssl::detail::engine::*)(void*, unsigned long), void*, unsigned long, std::error_code&, unsigned long*) (/home/sblin/Projects/jami-project/client-qt/daemon/src/.libs/libjami.so.0+0x1d76230)
#24 0x7f00a5135430 in asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::handshake_op, dht::http::Connection::async_handshake(std::function<void (std::error_code const&)>)::{lambda(std::error_code const&)#1}>::operator()(std::error_code, unsigned long, int) (/home/sblin/Projects/jami-project/client-qt/daemon/src/.libs/libjami.so.0+0x1d35430)
#25 0x7f00a514062b in asio::detail::reactive_socket_recv_op<asio::mutable_buffers_1, asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::handshake_op, dht::http::Connection::async_handshake(std::function<void (std::error_code const&)>)::{lambda(std::error_code const&)#1}>, asio::any_io_executor>::do_complete(void*, asio::detail::scheduler_operation*, std::error_code const&, unsigned long) (/home/sblin/Projects/jami-project/client-qt/daemon/src/.libs/libjami.so.0+0x1d4062b)
#26 0x7f00a501e62b in asio::detail::epoll_reactor::descriptor_state::do_complete(void*, asio::detail::scheduler_operation*, std::error_code const&, unsigned long) (/home/sblin/Projects/jami-project/client-qt/daemon/src/.libs/libjami.so.0+0x1c1e62b)
#27 0x7f00a3e7ebb8 in asio::detail::scheduler_operation::complete(void*, std::error_code const&, unsigned long) /home/sblin/Projects/jami-project/client-qt/daemon/contrib/x86_64-linux-gnu/include/asio/detail/scheduler_operation.hpp:39
#28 0x7f00a3e85aa6 in asio::detail::scheduler::do_run_one(asio::detail::conditionally_enabled_mutex::scoped_lock&, asio::detail::scheduler_thread_info&, std::error_code const&) /home/sblin/Projects/jami-project/client-qt/daemon/contrib/x86_64-linux-gnu/include/asio/detail/impl/scheduler.ipp:492
#29 0x7f00a3e84ed9 in asio::detail::scheduler::run(std::error_code&) /home/sblin/Projects/jami-project/client-qt/daemon/contrib/x86_64-linux-gnu/include/asio/detail/impl/scheduler.ipp:209
#30 0x7f00a3e86298 in asio::io_context::run() (/home/sblin/Projects/jami-project/client-qt/daemon/src/.libs/libjami.so.0+0xa86298)
#31 0x7f00a3e3aaef in operator() /home/sblin/Projects/jami-project/client-qt/daemon/src/manager.cpp:464
#32 0x7f00a3e73fb3 in __invoke_impl<void, jami::Manager::ManagerPimpl::ManagerPimpl(jami::Manager&)::<lambda()> > /usr/include/c++/11/bits/invoke.h:61
#33 0x7f00a3e73f76 in __invoke<jami::Manager::ManagerPimpl::ManagerPimpl(jami::Manager&)::<lambda()> > /usr/include/c++/11/bits/invoke.h:96
#34 0x7f00a3e73f23 in _M_invoke<0> /usr/include/c++/11/bits/std_thread.h:259
#35 0x7f00a3e73ef7 in operator() /usr/include/c++/11/bits/std_thread.h:266
#36 0x7f00a3e73edb in _M_run /usr/include/c++/11/bits/std_thread.h:211
#37 0x7f00a30dc252 (/lib/x86_64-linux-gnu/libstdc++.so.6+0xdc252)
#38 0x7f00a2c94ac2 in start_thread nptl/pthread_create.c:442
#39 0x7f00a2d26a3f (/lib/x86_64-linux-gnu/libc.so.6+0x126a3f)
0x62a0001c90e7 is located 3815 bytes inside of 21848-byte region [0x62a0001c8200,0x62a0001cd758)
freed by thread T0 here:
#0 0x7f00b50b4537 in __interceptor_free ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:127
#1 0x7f00a10f5174 in BUF_MEM_free (/lib/x86_64-linux-gnu/libcrypto.so.3+0xf5174)
previously allocated by thread T24 here:
#0 0x7f00b50b4887 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:145
#1 0x7f00a10f6ca5 in BUF_MEM_grow (/lib/x86_64-linux-gnu/libcrypto.so.3+0xf6ca5)
Thread T24 created by T0 here:
#0 0x7f00b5058685 in __interceptor_pthread_create ../../../../src/libsanitizer/asan/asan_interceptors.cpp:216
#1 0x7f00a30dc328 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/lib/x86_64-linux-gnu/libstdc++.so.6+0xdc328)
#2 0x7f00a3e3b424 in jami::Manager::ManagerPimpl::ManagerPimpl(jami::Manager&) /home/sblin/Projects/jami-project/client-qt/daemon/src/manager.cpp:461
#3 0x7f00a3e90a5e in std::_MakeUniq<jami::Manager::ManagerPimpl>::__single_object std::make_unique<jami::Manager::ManagerPimpl, jami::Manager&>(jami::Manager&) /usr/include/c++/11/bits/unique_ptr.h:962
#4 0x7f00a3e3fbfe in jami::Manager::Manager() /home/sblin/Projects/jami-project/client-qt/daemon/src/manager.cpp:755
#5 0x7f00a3e3f94b in jami::Manager::instance() /home/sblin/Projects/jami-project/client-qt/daemon/src/manager.cpp:728
#6 0x7f00a3f83bee in libjami::init(libjami::InitFlag) /home/sblin/Projects/jami-project/client-qt/daemon/src/ring_api.cpp:69
#7 0x5637e3d41766 in InstanceManagerInterface::InstanceManagerInterface(bool) /home/sblin/Projects/jami-project/client-qt/src/libclient/qtwrapper/instancemanager.cpp:54
#8 0x5637e4e588c7 (/home/sblin/Projects/jami-project/client-qt/build/jami+0x1d568c7)
SUMMARY: AddressSanitizer: heap-use-after-free ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:827 in __interceptor_memcpy
Shadow bytes around the buggy address:
0x0c54800311c0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c54800311d0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c54800311e0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c54800311f0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c5480031200: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
=>0x0c5480031210: fd fd fd fd fd fd fd fd fd fd fd fd[fd]fd fd fd
0x0c5480031220: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c5480031230: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c5480031240: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c5480031250: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c5480031260: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
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
==596032==ABORTING
```https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/925crash when finishing a call2023-12-05T21:02:23ZKateryna Kostiukcrash when finishing a call```
Thread 4 Crashed:
0 Ring 0x00000001009cdef4 jami::MediaFilter::flush() + 32
1 Ring 0x00000001009d0c88 jami::MediaRecorder::flush() + 52
2 Ring 0x0000...```
Thread 4 Crashed:
0 Ring 0x00000001009cdef4 jami::MediaFilter::flush() + 32
1 Ring 0x00000001009d0c88 jami::MediaRecorder::flush() + 52
2 Ring 0x00000001009d0a28 jami::MediaRecorder::~MediaRecorder() + 28
3 Ring 0x00000001009d83f0 jami::Recordable::~Recordable() + 100
4 Ring 0x0000000100a0e51c jami::SIPCall::~SIPCall() + 852
5 Ring 0x00000001007de0b4 std::__1::__function::__func<void jami::runOnMainThread<jami::Call::Call(std::__1::shared_ptr<jami::Account> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<ch... + 100
6 Ring 0x0000000100802ef4 jami::ScheduledExecutor::loop() + 472
7 Ring 0x0000000100803164 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, jami::ScheduledExecutor::ScheduledExecutor(std:... + 64
8 libsystem_pthread.dylib 0x00000002113a64d4 _pthread_start + 136 (pthread.c:904)
9 libsystem_pthread.dylib 0x00000002113a5a10 thread_start + 8 (:-1)
```Kateryna KostiukKateryna Kostiukhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/924Double conversation on bad presence sync2023-12-05T21:02:29ZSébastien BlinDouble conversation on bad presence sync# Scenario
+ Disable the presence in AccountManager::startSync
+ Alice adds Bob, Bob adds Alice => 1 conversation both side
+ Re-enable presence
+ Alice sends a message
# Current result
Bob receives a new trust request and doesn't acc...# Scenario
+ Disable the presence in AccountManager::startSync
+ Alice adds Bob, Bob adds Alice => 1 conversation both side
+ Re-enable presence
+ Alice sends a message
# Current result
Bob receives a new trust request and doesn't accept it automatically
# Expected
Alice and Bob should uses only 1 conversationSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/923Fix Audio sharing2023-12-05T21:02:32ZSébastien BlinFix Audio sharing# Scenario
+ Go in 1:1 (or in conference)
+ Share a video + audio file
# Expected
Audio must be played locally and remotely
# Current
No audio# Scenario
+ Go in 1:1 (or in conference)
+ Share a video + audio file
# Expected
Audio must be played locally and remotely
# Current
No audioSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/922Accepting stuck in syncing for a long time2023-11-23T19:59:28ZSébastien BlinAccepting stuck in syncing for a long time# Scenario
+ Alice adds Bob
+ Bob receives the request
+ Alice goes offline
+ Bob accepts (syncing)
+ After 1 min Alice goes online
# Current result
Stuck in syncing
# Expected
Conversation must sync# Scenario
+ Alice adds Bob
+ Bob receives the request
+ Alice goes offline
+ Bob accepts (syncing)
+ After 1 min Alice goes online
# Current result
Stuck in syncing
# Expected
Conversation must syncSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/917Swarm-call: bugguy state if join call in audio-only2023-11-17T16:28:47ZSébastien BlinSwarm-call: bugguy state if join call in audio-only# Scenario
+ Host a video call in a swarm
+ With another device join in audio
# Current result
+ Stuck in calling, media not negotiated
# Expected
+ Call should work with muted video# Scenario
+ Host a video call in a swarm
+ With another device join in audio
# Current result
+ Stuck in calling, media not negotiated
# Expected
+ Call should work with muted videoSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/916Swarm-call: sometimes doesn't answer2023-11-17T16:28:52ZSébastien BlinSwarm-call: sometimes doesn't answer# Scenario
none identified
# Current result
Sometimes, caller stays in calling (but a swarm-call should be automatically answered by the host)# Scenario
none identified
# Current result
Sometimes, caller stays in calling (but a swarm-call should be automatically answered by the host)Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/915conference deadlock when media changed2023-11-17T16:29:00ZKateryna Kostiukconference deadlock when media changed```
* thread #10
frame #0: 0x00000001c5fa3f3c libsystem_kernel.dylib`__psynch_mutexwait + 8
frame #1: 0x00000001d5538620 libsystem_pthread.dylib`_pthread_mutex_firstfit_lock_wait + 80
frame #2: 0x00000001d552f304 libsystem_p...```
* thread #10
frame #0: 0x00000001c5fa3f3c libsystem_kernel.dylib`__psynch_mutexwait + 8
frame #1: 0x00000001d5538620 libsystem_pthread.dylib`_pthread_mutex_firstfit_lock_wait + 80
frame #2: 0x00000001d552f304 libsystem_pthread.dylib`_pthread_mutex_firstfit_lock_slow$VARIANT$armv81 + 244
frame #3: 0x00000001020cfc4c Ring`pj_mutex_lock + 32
frame #4: 0x00000001020d7154 Ring`pj_grp_lock_acquire + 60
frame #5: 0x0000000101d41b28 Ring`pjsip_dlg_create_request + 80
* frame #6: 0x000000010164dd54 Ring`jami::SIPCall::sendSIPInfo(this=0x0000000109ed3618, body="<?xml version=\"1.0\" encoding=\"utf-8\" ?><media_control><vc_primitive> <stream_id>1</stream_id><to_encoder><picture_fast_update/></to_encoder></vc_primitive></media_control>", subtype="media_control+xml") at sipcall.cpp:631:9
frame #7: 0x000000010164e3ec Ring`jami::SIPCall::requestKeyframe(this=0x0000000109ed3618, streamIdx=1) at sipcall.cpp:687:9
frame #8: 0x0000000101659bbc Ring`jami::SIPCall::updateRemoteMedia(this=0x0000000109ed3618) at sipcall.cpp:2297:17
frame #9: 0x00000001016979b0 Ring`jami::SIPCall::onMediaNegotiationComplete(this=0x0000000282b3a408)::$_40::operator()() const at sipcall.cpp:2712:24
frame #10: 0x0000000101697780 Ring`void jami::runOnMainThread<jami::SIPCall::onMediaNegotiationComplete()::$_40>(this=0x0000000282b3a408)::$_40&&, char const*, unsigned int)::'lambda'()::operator()() at manager.h:909:87
frame #11: 0x000000010169775c Ring`decltype(__f=0x0000000282b3a408)::$_40>()()) std::__1::__invoke[abi:v15006]<void jami::runOnMainThread<jami::SIPCall::onMediaNegotiationComplete()::$_40>(jami::SIPCall::onMediaNegotiationComplete()::$_40&&, char const*, unsigned int)::'lambda'()&>(jami::SIPCall::onMediaNegotiationComplete()::$_40&&) at invoke.h:394:23
frame #12: 0x0000000101697714 Ring`void std::__1::__invoke_void_return_wrapper<void, true>::__call<void jami::runOnMainThread<jami::SIPCall::onMediaNegotiationComplete(__args=0x0000000282b3a408)::$_40>(jami::SIPCall::onMediaNegotiationComplete()::$_40&&, char const*, unsigned int)::'lambda'()&>(void jami::runOnMainThread<jami::SIPCall::onMediaNegotiationComplete()::$_40>(jami::SIPCall::onMediaNegotiationComplete()::$_40&&, char const*, unsigned int)::'lambda'()&) at invoke.h:479:9
frame #13: 0x00000001016976f0 Ring`std::__1::__function::__alloc_func<void jami::runOnMainThread<jami::SIPCall::onMediaNegotiationComplete()::$_40>(jami::SIPCall::onMediaNegotiationComplete()::$_40&&, char const*, unsigned int)::'lambda'(), std::__1::allocator<void jami::runOnMainThread<jami::SIPCall::onMediaNegotiationComplete()::$_40>(jami::SIPCall::onMediaNegotiationComplete()::$_40&&, char const*, unsigned int)::'lambda'()>, void ()>::operator(this=0x0000000282b3a408)[abi:v15006]() at function.h:185:16
frame #14: 0x00000001016962c4 Ring`std::__1::__function::__func<void jami::runOnMainThread<jami::SIPCall::onMediaNegotiationComplete()::$_40>(jami::SIPCall::onMediaNegotiationComplete()::$_40&&, char const*, unsigned int)::'lambda'(), std::__1::allocator<void jami::runOnMainThread<jami::SIPCall::onMediaNegotiationComplete()::$_40>(jami::SIPCall::onMediaNegotiationComplete()::$_40&&, char const*, unsigned int)::'lambda'()>, void ()>::operator(this=0x0000000282b3a400)() at function.h:359:12
frame #15: 0x0000000101030b98 Ring`std::__1::__function::__value_func<void ()>::operator(this=0x0000000282b3a400)[abi:v15006]() const at function.h:512:16
frame #16: 0x0000000101030b48 Ring`std::__1::function<void ()>::operator(this= Lambda in File manager.h at Line 909)() const at function.h:1197:12
frame #17: 0x000000010105a05c Ring`jami::ScheduledExecutor::loop(this=0x0000000108a4dc20) at scheduled_executor.cpp:145:13
frame #18: 0x000000010105bd78 Ring`jami::ScheduledExecutor::ScheduledExecutor(this=0x000000028242ede8)::$_0::operator()() const at scheduled_executor.cpp:35:13
frame #19: 0x000000010105bd00 Ring`decltype(__f=0x000000028242ede8)::$_0>()()) std::__1::__invoke[abi:v15006]<jami::ScheduledExecutor::ScheduledExecutor(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(jami::ScheduledExecutor::ScheduledExecutor(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0&&) at invoke.h:394:23
frame #20: 0x000000010105bc9c Ring`void std::__1::__thread_execute[abi:v15006]<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, jami::ScheduledExecutor::ScheduledExecutor(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(__t=size=2, (null)=__tuple_indices<> @ 0x000000016fbd6f7f)::$_0>&, std::__1::__tuple_indices<>) at thread:290:5
frame #21: 0x000000010105b4fc Ring`void* std::__1::__thread_proxy[abi:v15006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, jami::ScheduledExecutor::ScheduledExecutor(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0> >(__vp=0x000000028242ede0) at thread:301:5
frame #22: 0x00000001d552f0ec libsystem_pthread.dylib`_pthread_start + 116
(lldb) bt
* thread #80
frame #0: 0x00000001c5fa3f3c libsystem_kernel.dylib`__psynch_mutexwait + 8
frame #1: 0x00000001d5538620 libsystem_pthread.dylib`_pthread_mutex_firstfit_lock_wait + 80
frame #2: 0x00000001d552f304 libsystem_pthread.dylib`_pthread_mutex_firstfit_lock_slow$VARIANT$armv81 + 244
frame #3: 0x0000000198df832c libc++.1.dylib`std::__1::recursive_mutex::lock() + 12
frame #4: 0x0000000101078be0 Ring`std::__1::lock_guard<std::__1::recursive_mutex>::lock_guard[abi:v15006](this=0x00000001722a9c08, __m=0x0000000109ed3700) at __mutex_base:94:27
frame #5: 0x00000001010789a8 Ring`std::__1::lock_guard<std::__1::recursive_mutex>::lock_guard[abi:v15006](this=0x00000001722a9c08, __m=0x0000000109ed3700) at __mutex_base:94:21
* frame #6: 0x000000010165c650 Ring`jami::SIPCall::getMediaAttributeList(this=0x0000000109ed3618) const at sipcall.cpp:2652:43
frame #7: 0x000000010165c8f4 Ring`jami::SIPCall::getAudioStreams(this=0x0000000109ed3618) const at sipcall.cpp:2664:19
frame #8: 0x0000000100f524a8 Ring`jami::Conference::bindParticipant(this=0x0000000110c8b218, participant_id="8812619413191767") at conference.cpp:1000:52
frame #9: 0x000000010165f5b0 Ring`jami::SIPCall::enterConference(this=0x0000000109ed3618, conference=std::__1::shared_ptr<jami::Conference>::element_type @ 0x0000000110c8b218 strong=3 weak=7) at sipcall.cpp:3161:17
frame #10: 0x0000000100f4d104 Ring`jami::Conference::handleMediaChangeRequest(this=0x0000000110c8b218, call=std::__1::shared_ptr<jami::Call>::element_type @ 0x0000000109ed3618 strong=9 weak=19, remoteMediaList=size=2) at conference.cpp:706:11
frame #11: 0x000000010165e1d0 Ring`jami::SIPCall::onReceiveReinvite(this=0x0000000109ed3618, offer=0x0000000110ce4c28, rdata=0x0000000110965fe8) at sipcall.cpp:2953:15
frame #12: 0x00000001016c203c Ring`jami::reinvite_received_cb(inv=0x000000010989fc28, offer=0x0000000110ce4c28, rdata=0x0000000110965fe8) at sipvoiplink.cpp:1002:26
frame #13: 0x0000000101dfba24 Ring`inv_on_state_confirmed + 1572
frame #14: 0x0000000101df9b84 Ring`mod_inv_on_tsx_state + 80
frame #15: 0x0000000101d43534 Ring`pjsip_dlg_on_tsx_state + 172
frame #16: 0x0000000101d3d750 Ring`tsx_set_state + 488
frame #17: 0x0000000101d3ce78 Ring`tsx_on_state_null + 56
frame #18: 0x0000000101d3db5c Ring`pjsip_tsx_recv_msg + 144
frame #19: 0x0000000101d42bf0 Ring`pjsip_dlg_on_rx_request + 796
frame #20: 0x0000000101d446fc Ring`mod_ua_on_rx_request + 540
frame #21: 0x0000000101d2d08c Ring`pjsip_endpt_process_rx_data + 452
frame #22: 0x0000000101d2c8ec Ring`endpt_on_rx_msg + 336
frame #23: 0x0000000101d33f70 Ring`pjsip_tpmgr_receive_packet + 1008
frame #24: 0x00000001011518e8 Ring`jami::tls::ChanneledSIPTransport::start(this=0x000000010f484808, buf="\xeba\x9e\v\xd8M\xb7\x87^\x9cҟ\x8b\U0000001f\x9f\U00000010\x9c\xb1\x83^\x99邛\xd0\xe4\xfe?\xebB\x9bi\xf6\b*'\xf7\xe7\U00000014\U000000116_\xee\xa2\U0000001d\xed\x91\xc2\xd8\U00000012\xf9=\xf5/\x96\U0000001a\xe70\xf3B\x82C\xd7\xcaV;ߖ\xfa\U0000001c\x8d\xfa\x80\xf3$\x888\xf8\xc2\xef\U00000005\xe5\xd4\xcbԟ\xd1W\xc3D!\x9f\x98\U00000013\xcf=9\xfe\x8d\x9f\x88VI\U0000001b/\x8b\x85d\xb5\x97", len=1390)::$_3::operator()(unsigned char const*, unsigned long) const at channeled_transport.cpp:172:26
frame #25: 0x000000010115180c Ring`decltype(__f=0x000000010f484808, __args=0x00000001722aad58, __args=0x00000001722aad50)::$_3&>()(std::declval<unsigned char const*>(), std::declval<unsigned long>())) std::__1::__invoke[abi:v15006]<jami::tls::ChanneledSIPTransport::start()::$_3&, unsigned char const*, unsigned long>(jami::tls::ChanneledSIPTransport::start()::$_3&, unsigned char const*&&, unsigned long&&) at invoke.h:394:23
frame #26: 0x00000001011517ac Ring`long std::__1::__invoke_void_return_wrapper<long, false>::__call<jami::tls::ChanneledSIPTransport::start(__args=0x000000010f484808, __args=0x00000001722aad58, __args=0x00000001722aad50)::$_3&, unsigned char const*, unsigned long>(jami::tls::ChanneledSIPTransport::start()::$_3&, unsigned char const*&&, unsigned long&&) at invoke.h:470:16
frame #27: 0x0000000101151778 Ring`std::__1::__function::__alloc_func<jami::tls::ChanneledSIPTransport::start()::$_3, std::__1::allocator<jami::tls::ChanneledSIPTransport::start()::$_3>, long (unsigned char const*, unsigned long)>::operator(this=0x000000010f484808, __arg=0x00000001722aad58, __arg=0x00000001722aad50)[abi:v15006](unsigned char const*&&, unsigned long&&) at function.h:185:16
frame #28: 0x00000001011505dc Ring`std::__1::__function::__func<jami::tls::ChanneledSIPTransport::start()::$_3, std::__1::allocator<jami::tls::ChanneledSIPTransport::start()::$_3>, long (unsigned char const*, unsigned long)>::operator(this=0x000000010f484800, __arg=0x00000001722aad58, __arg=0x00000001722aad50)(unsigned char const*&&, unsigned long&&) at function.h:359:12
frame #29: 0x0000000101c49bec Ring`dhtnet::ChannelSocket::onRecv(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >&&) + 88
frame #30: 0x0000000101c4510c Ring`dhtnet::MultiplexedSocket::Impl::handleChannelPacket(unsigned short, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >&&) + 268
frame #31: 0x0000000101c44348 Ring`dhtnet::MultiplexedSocket::Impl::eventLoop() + 532
frame #32: 0x0000000101c4e2a4 Ring`dhtnet::MultiplexedSocket::Impl::Impl(dhtnet::MultiplexedSocket&, std::__1::shared_ptr<asio::io_context>, dht::Hash<32ul> const&, std::__1::unique_ptr<dhtnet::TlsSocketEndpoint, std::__1::default_delete<dhtnet::TlsSocketEndpoint> >, std::__1::shared_ptr<dht::log::Logger>)::'lambda'()::operator()() const + 44
frame #33: 0x0000000101c4e1ec Ring`void* std::__1::__thread_proxy[abi:v15006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, dhtnet::MultiplexedSocket::Impl::Impl(dhtnet::MultiplexedSocket&, std::__1::shared_ptr<asio::io_context>, dht::Hash<32ul> const&, std::__1::unique_ptr<dhtnet::TlsSocketEndpoint, std::__1::default_delete<dhtnet::TlsSocketEndpoint> >, std::__1::shared_ptr<dht::log::Logger>)::'lambda'()> >(void*) + 52
frame #34: 0x00000001d552f0ec libsystem_pthread.dylib`_pthread_start + 116
```https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/914Video bitrate adjustment improvements2023-11-09T13:45:43ZAlexander Lussier-CullenVideo bitrate adjustment improvementsCurrently, the video bitrate adjustment functionality doesn't perform optimally.
When losses are detected, the bitrate is reduced.
The problem is that it can then immediately be increased again, repeating the losses.
This means that i...Currently, the video bitrate adjustment functionality doesn't perform optimally.
When losses are detected, the bitrate is reduced.
The problem is that it can then immediately be increased again, repeating the losses.
This means that if losses are consistent due to some network limitation, they will repeatedly occur without end.https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/913heap-use-after free2024-02-09T19:57:02ZSébastien Blinheap-use-after free```
=================================================================
==41866==ERROR: AddressSanitizer: heap-use-after-free on address 0x0002a5258a88 at pc 0x000105383380 bp 0x0003157867b0 sp 0x0003157867a8
READ of size 4 at 0x0002a5258a...```
=================================================================
==41866==ERROR: AddressSanitizer: heap-use-after-free on address 0x0002a5258a88 at pc 0x000105383380 bp 0x0003157867b0 sp 0x0003157867a8
READ of size 4 at 0x0002a5258a88 thread T17074
#0 0x10538337c in stun_on_request_complete+0xc54 (Jami:arm64+0x102a9b37c)
#1 0x10537859c in stun_tsx_on_complete+0x2a8 (Jami:arm64+0x102a9059c)
#2 0x105380240 in retransmit_timer_callback+0x12c (Jami:arm64+0x102a98240)
#3 0x105313d94 in pj_timer_heap_poll+0x468 (Jami:arm64+0x102a2bd94)
#4 0x1046db30c in dhtnet::IceTransport::Impl::handleEvents(unsigned int)+0x110 (Jami:arm64+0x101df330c)
#5 0x1046f6128 in void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, dhtnet::IceTransport::Impl::initIceInstance(dhtnet::IceTransportOptions const&)::$_6>>(void*)+0x154 (Jami:arm64+0x101e0e128)
#6 0x186caf030 in _pthread_start+0x84 (libsystem_pthread.dylib:arm64e+0x7030)
#7 0x186ca9e38 in thread_start+0x4 (libsystem_pthread.dylib:arm64e+0x1e38)
0x0002a5258a88 is located 200 bytes inside of 256-byte region [0x0002a52589c0,0x0002a5258ac0)
freed by thread T17074 here:
#0 0x11162ace0 in wrap_free+0x98 (libclang_rt.asan_osx_dynamic.dylib:arm64e+0x52ce0)
#1 0x10530167c in pj_pool_destroy_int+0xbc (Jami:arm64+0x102a1967c)
#2 0x105302530 in cpool_release_pool+0xec (Jami:arm64+0x102a1a530)
#3 0x105391e58 in dataconn_on_data_read+0x13c (Jami:arm64+0x102aa9e58)
#4 0x1052f18f0 in ioqueue_on_read_complete+0x39c (Jami:arm64+0x102a098f0)
#5 0x1052e154c in ioqueue_dispatch_read_event+0x700 (Jami:arm64+0x1029f954c)
#6 0x1052e6564 in pj_ioqueue_poll+0x900 (Jami:arm64+0x1029fe564)
#7 0x1046db3ec in dhtnet::IceTransport::Impl::handleEvents(unsigned int)+0x1f0 (Jami:arm64+0x101df33ec)
#8 0x1046f6128 in void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, dhtnet::IceTransport::Impl::initIceInstance(dhtnet::IceTransportOptions const&)::$_6>>(void*)+0x154 (Jami:arm64+0x101e0e128)
#9 0x186caf030 in _pthread_start+0x84 (libsystem_pthread.dylib:arm64e+0x7030)
#10 0x186ca9e38 in thread_start+0x4 (libsystem_pthread.dylib:arm64e+0x1e38)
```
[use_after_free.log](/uploads/9f8d90ce3d2e0ac87d6359747d8173a9/use_after_free.log)https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/912Crash when open TroubleshootSetting2023-11-02T14:00:48ZLanius-collarisCrash when open TroubleshootSettingBug report form
---------------
## Describe your environment
Please specify the following:
- OS: linux
- Jami version:
- What build you are using: [your own stable/20231030.0]
## Steps to reproduce
Note: Better the scenario is, bett...Bug report form
---------------
## Describe your environment
Please specify the following:
- OS: linux
- Jami version:
- What build you are using: [your own stable/20231030.0]
## Steps to reproduce
Note: Better the scenario is, better we will be able to reproduce and debug.
- Can you reproduce the bug: [at will]
- Steps:
1. disable all accounts
\
2. open TroubleshootSetting
- Actual result: crash
- Expected result:Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/911Change network during call will quit the call2024-02-27T18:43:10ZElysChange network during call will quit the callSteps to reproduce:
1. Make a call Android - Desktop; Android is using a WiFi network
1. Now switch to Mobile Data Networks
1. The call will end
Just tried another app (video call - Threema app): If you switch between Wi-Fi and Mobile ...Steps to reproduce:
1. Make a call Android - Desktop; Android is using a WiFi network
1. Now switch to Mobile Data Networks
1. The call will end
Just tried another app (video call - Threema app): If you switch between Wi-Fi and Mobile Data Networks the video of one peer will be shortly interrupted but the call goes on.
Maybe you try out the following scenarios (during a call):
- switch between Wi-Fi and Mobile Data Networks
- switch between local network (without internet) and same/different WiFi (with internet) and/or mobile data networks (one SIM; Changing from SIM 1 to SIM 2; or 4G to 5G)
If necessary / What happens during the switch
- if one / mutliple peer(s) add(s) video and/or remove the video
- during a file transfer (and if you block/remove a contact while changing the network)?
- if a call is searching / connecting (your own or another contact tries to call you)
- Will this affect Jami-Accounts AND SIP-Accounts?https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/910Wrong UDP ICE candidates (UPnP Enabled/TURN disabled)2023-10-30T13:47:56ZSébastien BlinWrong UDP ICE candidates (UPnP Enabled/TURN disabled)# Scenario
+ Connect to JamiLabs
+ Disable TURN for the account, Enable UPnP
+ Start a call
# Expected result
UDP ICE candidates should show public ip in srflx candidates
# Current result
+ UDP candidates doesn't have the public ip ...# Scenario
+ Connect to JamiLabs
+ Disable TURN for the account, Enable UPnP
+ Start a call
# Expected result
UDP ICE candidates should show public ip in srflx candidates
# Current result
+ UDP candidates doesn't have the public ip in the srflx list
+ However, TCP candidates are correct
Meaning that depending the configuration, you can have a TCP negotiation success and media failure (causing the call to stop)
```
[1698335554.247|23970|sdp.cpp :498 ] [SDP OFFER] Remote active session:
v=0
o=localhost 3907324354 1 IN IP4 192.168.0.147
s=Call ID 1888667388261686
c=IN IP4 192.168.0.147
t=0 0
a=ice-ufrag:124cdb6c
a=ice-pwd:621c04a84d50cacf2ef374ff
m=audio 27538 RTP/SAVP 104 101
a=rtpmap:104 opus/48000/2
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=rtcp:27539 IN IP4 192.168.0.147
a=sendrecv
a=candidate:Hc0a80093 1 UDP 2130706431 192.168.0.147 42590 typ host
a=candidate:Ha0989db2 1 UDP 2130706431 fe80::7c8d:d8ff:fed4:ac16 42915 typ host
a=candidate:Sc0a80093 1 UDP 1694498303 192.168.0.147 21296 typ srflx
a=candidate:Hc0a80093 1 UDP 2130706431 192.168.0.147 21296 typ host
a=candidate:Hc0a80093 2 UDP 2130706430 192.168.0.147 38712 typ host
a=candidate:Ha0989db2 2 UDP 2130706430 fe80::7c8d:d8ff:fed4:ac16 37073 typ host
a=candidate:Sc0a80093 2 UDP 1694498302 192.168.0.147 23972 typ srflx
a=candidate:Hc0a80093 2 UDP 2130706430 192.168.0.147 23972 typ host
m=video 57832 RTP/SAVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=428029
a=rtcp:57833 IN IP4 192.168.0.147
a=sendrecv
a=candidate:Hc0a80093 3 UDP 2130706429 192.168.0.147 42826 typ host
a=candidate:Ha0989db2 3 UDP 2130706429 fe80::7c8d:d8ff:fed4:ac16 48183 typ host
a=candidate:Sc0a80093 3 UDP 1694498301 192.168.0.147 22465 typ srflx
a=candidate:Hc0a80093 3 UDP 2130706429 192.168.0.147 22465 typ host
a=candidate:Hc0a80093 4 UDP 2130706428 192.168.0.147 42565 typ host
a=candidate:Ha0989db2 4 UDP 2130706428 fe80::7c8d:d8ff:fed4:ac16 40706 typ host
a=candidate:Sc0a80093 4 UDP 1694498300 192.168.0.147 21643 typ srflx
a=candidate:Hc0a80093 4 UDP 2130706428 192.168.0.147 21643 typ host
```Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/909Record: flickering video if inputs have different fps2023-10-20T11:12:08ZAline Gondim SantosRecord: flickering video if inputs have different fpsHow to reproduce: share a file that is 60fps and have another stream with 30 fps
With https://review.jami.net/c/jami-daemon/+/26036 the fps are fixed to 30, but we should support the bigger one.How to reproduce: share a file that is 60fps and have another stream with 30 fps
With https://review.jami.net/c/jami-daemon/+/26036 the fps are fixed to 30, but we should support the bigger one.https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/908Mute and unmute in swarm group call2023-10-20T14:27:11ZWear GuxjMute and unmute in swarm group callIn group swarm call, there are two bugs when muting the microphone. It's the same if only audio or both audio and video. It's been verified with the latest Android client.
1. Alice who initiated the group call needs to click two times...In group swarm call, there are two bugs when muting the microphone. It's the same if only audio or both audio and video. It's been verified with the latest Android client.
1. Alice who initiated the group call needs to click two times on the mute button before the button is lit and her microphone is actually muted. The first click does nothing.
2. Then when Bob joins the group call, it causes Alice's client to go back from muted to unmuted. This is obviously a privacy problem, but at least the unmute is reflected in Alice's user interface.Sébastien BlinAlexander Lussier-CullenSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/907Peer gets unmuted when other peer starts video2023-10-19T12:41:36ZWear GuxjPeer gets unmuted when other peer starts videoThere is some buggy behavior when upgrading an audio call to video on latest version for Android and using TURN.
1. Make an audio call between Alice and Bob in any direction.
2. When line is open, both peers mute their microphone.
3. Al...There is some buggy behavior when upgrading an audio call to video on latest version for Android and using TURN.
1. Make an audio call between Alice and Bob in any direction.
2. When line is open, both peers mute their microphone.
3. Alice turns her camera on.
4. This will cause Bob to become unmuted, not good!
5. Alice's video will show to Bob, but it's less likely that Bob will be able to start showing his video to Alice.Alexander Lussier-CullenAlexander Lussier-Cullenhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/906PACKAGE_VERSION of win is inconsistent with PACKAGE_VERSION of linux2024-01-09T19:32:29ZLanius-collarisPACKAGE_VERSION of win is inconsistent with PACKAGE_VERSION of linux[CMakeLists.txt L4](https://git.jami.net/savoirfairelinux/jami-daemon/-/blob/master/CMakeLists.txt?ref_type=heads#L4) \
[compat/msvc/config.h L164](https://git.jami.net/savoirfairelinux/jami-daemon/-/blob/master/compat/msvc/config.h?ref_...[CMakeLists.txt L4](https://git.jami.net/savoirfairelinux/jami-daemon/-/blob/master/CMakeLists.txt?ref_type=heads#L4) \
[compat/msvc/config.h L164](https://git.jami.net/savoirfairelinux/jami-daemon/-/blob/master/compat/msvc/config.h?ref_type=heads#L164)Andreas TraczykAndreas Traczyk