jami-daemon issueshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues2023-12-29T23:49:35Zhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/842FFmpeg 6.0 hevc hardware acceleration NVENC/NVDEC2023-12-29T23:49:35ZAKmatiAKFFmpeg 6.0 hevc hardware acceleration NVENC/NVDECHi, in the new ffmpeg version in order to use hevc hardware acceleration on some nvidia graphic cards -b_ref_mode disabled needs to be passed to ffmpeg. Thread here: https://bbs.archlinux.org/viewtopic.php?id=284290
Also, I suggest to a...Hi, in the new ffmpeg version in order to use hevc hardware acceleration on some nvidia graphic cards -b_ref_mode disabled needs to be passed to ffmpeg. Thread here: https://bbs.archlinux.org/viewtopic.php?id=284290
Also, I suggest to add information about enabling HW accel to get hevc working in enabled codecs settings. I figured it out by accident and for some time wondered why H265 is not listed.Adrien BéraudAdrien Béraudhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/200ffmpeg: add G726, iLBC codecs (SIP: no audio in call)2023-12-27T18:07:22ZLinus G.ffmpeg: add G726, iLBC codecs (SIP: no audio in call)I made an internal call via fritz.box and I called myself via the telephone by **600. I heared the ringtone but when I accepted the call, neither of us did hear anything. I'm using Kubuntu 18.04. I guess, these are the important lines in...I made an internal call via fritz.box and I called myself via the telephone by **600. I heared the ringtone but when I accepted the call, neither of us did hear anything. I'm using Kubuntu 18.04. I guess, these are the important lines in the log:
```
[1577674451.545|19511|sipcall.cpp :906 ] [call:3558973192781136] startAllMedia()
[1577674451.545|19511|sip_utils.cpp :203 ] Registered thread 0x7ff0bdff6dd0 (0x4C36)
[1577674451.546|19511|sdp.cpp :599 ] Could not find rtpmap attribute
[1577674451.546|19511|sdp.cpp :599 ] Could not find rtpmap attribute
[1577674451.546|19511|sdp.cpp :616 ] Could not find codec G726-32
[1577674451.546|19511|sdp.cpp :616 ] Could not find codec G726-32
[1577674451.546|19511|sdp.cpp :616 ] Could not find codec G726-40
[1577674451.546|19511|sdp.cpp :616 ] Could not find codec G726-24
[1577674451.546|19511|sdp.cpp :616 ] Could not find codec iLBC
[1577674451.546|19511|sdp.cpp :616 ] Could not find codec telephone-event
[1577674451.546|19511|sipcall.cpp :956 ] [call:3558973192781136] [SDP:slot#0] Missing remote codec
[1577674451.546|19511|video_rtp_session.cpp:91 ] No socket pair, keyframe request callback not possible
```
Full log: https://pastebin.com/RtTvcmBY
Kind regardsPierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/237Use acceleration for recording2023-12-27T18:07:03ZPierre LespagnolUse acceleration for recordinghttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/557Fuzzing SIP over TLS2023-12-27T18:02:51ZSébastien BlinFuzzing SIP over TLS# Fuzzing SIP over TLS
Currently, I've made a lexer for SIP communication that allows one to construct an object and to manipulate a SIP message.
### Scenarios
#### Shuffle randomly the SIP message
This results in the call been hang ...# Fuzzing SIP over TLS
Currently, I've made a lexer for SIP communication that allows one to construct an object and to manipulate a SIP message.
### Scenarios
#### Shuffle randomly the SIP message
This results in the call been hang after some delay. We probably want to generate random fields instead.
#### Keep changing the SIP version
Version is changed randomly between SIP/1.0 and SIP/2.0.
#### TODO - Change the status code
### Bad SDP body
If the body content of a SDP request is invalid, an assertion failed. The null pointer seems to not be a problem because it's checked, however the caller should probably not call the function in the first place. Will investigate further.
In sdp.cpp:
```c++
583 assert(remoteSession_);
```
```
#0 0x00007ffff39fdd22 in raise () at /usr/lib/libc.so.6
#1 0x00007ffff39e7862 in abort () at /usr/lib/libc.so.6
#2 0x00007ffff39e7747 in _nl_load_domain.cold () at /usr/lib/libc.so.6
#3 0x00007ffff39f6616 in () at /usr/lib/libc.so.6
#4 0x000055555a84fa0e in jami::Sdp::processIncomingOffer(std::vector<jami::MediaAttribute, std::allocator<jami::MediaAttribute> > const&) (this=0x6110015f0080, mediaList=std::vector of length 1, capacity 1 = {...}) at sdp.cpp:583
#5 0x0000555559bc894e in jami::transaction_request_cb(pjsip_rx_data*) (rdata=0x625007721b08) at sipvoiplink.cpp:451
#6 0x000055555aeaf623 in pjsip_endpt_process_rx_data ()
#7 0x000055555aeaf856 in endpt_on_rx_msg ()
#8 0x000055555aeb685e in pjsip_tpmgr_receive_packet ()
#9 0x000055555a079ce0 in jami::tls::ChanneledSIPTransport::handleEvents() (this=0x625007721900) at /usr/include/c++/11.1.0/bits/channeled_transport.cpp:237
#10 0x000055555a070967 in operator()() const (__closure=0x603002aed2b0) at /usr/include/c++/11.1.0/bits/channeled_transport.cpp:150
#11 0x000055555a0809bd in std::__invoke_impl<void, jami::tls::ChanneledSIPTransport::ChanneledSIPTransport(pjsip_endpoint*, int, const std::shared_ptr<jami::ChannelSocket>&, const jami::IpAddr&, const jami::IpAddr&, jami::onShutdownCb&&)::<lambda(const uint8_t*, size_t)>::<lambda()>&>(std::__invoke_other, struct {...} &) (__f=...) at /usr/include/c++/11.1.0/bits/invoke.h:61
#12 0x000055555a07ea22 in std::__invoke_r<void, jami::tls::ChanneledSIPTransport::ChanneledSIPTransport(pjsip_endpoint*, int, const std::shared_ptr<jami::ChannelSocket>&, const jami::IpAddr&, const jami::IpAddr&, jami::onShutdownCb&&)::<lambda(const uint8_t*, size_t)>::<lambda()>&>(struct {...} &) (__fn=...) at /usr/include/c++/11.1.0/bits/invoke.h:111
#13 0x000055555a07d701 in std::_Function_handler<void(), jami::tls::ChanneledSIPTransport::ChanneledSIPTransport(pjsip_endpoint*, int, const std::shared_ptr<jami::ChannelSocket>&, const jami::IpAddr&, const jami::IpAddr&, jami::onShutdownCb&&)::<lambda(const uint8_t*, size_t)>::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/11.1.0/bits/std_function.h:291
#14 0x00005555596e546d in std::function<void ()>::operator()() const (this=0x603002aed2b0) at /usr/include/c++/11.1.0/bits/std_function.h:560
#15 0x0000555559a89730 in jami::ScheduledExecutor::loop() (this=0x625007723e10) at scheduled_executor.cpp:137
#16 0x0000555559a85e1e in operator()() const (__closure=0x603000073a88) at scheduled_executor.cpp:32
#17 0x0000555559a8f8be in std::__invoke_impl<void, jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> >(std::__invoke_other, struct {...} &&) (__f=...) at /usr/include/c++/11.1.0/bits/invoke.h:61
#18 0x0000555559a8f779 in std::__invoke<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> >(struct {...} &&) (__fn=...) at /usr/include/c++/11.1.0/bits/invoke.h:96
#19 0x0000555559a8f64e in std::thread::_Invoker<std::tuple<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > >::_M_invoke<0>(std::_Index_tuple<0>) (this=0x603000073a88) at /usr/include/c++/11.1.0/bits/std_thread.h:253
#20 0x0000555559a8f584 in std::thread::_Invoker<std::tuple<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > >::operator()(void) (this=0x603000073a88) at /usr/include/c++/11.1.0/bits/std_thread.h:260
#21 0x0000555559a8f53c in std::thread::_State_impl<std::thread::_Invoker<std::tuple<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > > >::_M_run(void) (this=0x603000073a80) at /usr/include/c++/11.1.0/bits/std_thread.h:211
#22 0x00007ffff47333c4 in std::execute_native_thread_routine(void*) (__p=0x603000073a80) at /build/gcc/src/gcc/libstdc++-v3/src/c++11/thread.cc:82
#23 0x00007ffff667a259 in start_thread () at /usr/lib/libpthread.so.0
#24 0x00007ffff3abf5e3 in clone () at /usr/lib/libc.so.6
```
#### Payload attack (SDP Huge value of Content-Length)
Alice duplicates the body of its SDP request N times. N grows at a rate of 2^M.
After some threshold, connection between peer can not be establish if iniated from Alice. Bob can still call Alice.
### Payload attack (SIP MESSAGE)
Alice spam bob with very huge message text.
The TLS connections seems to stop working and Bob receive the message text (short version) over the DHt instead.
### Sending none supported content-type (text/html, text/javascript, etc.)
The content-type is simply ignored. Call can be made.
#### TODO - Sending SIP request over none SIP channel (can be applied to other protocols as well)BacklogOlivier DionOlivier Dionhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/849Discarding message from invalid peer certificate2023-12-27T18:02:22ZPierre NicolasDiscarding message from invalid peer certificate## Describe your environment
- Device model: <br>
1. Device A : Samsung SM-T720, Android 11 API 30, Master (3f87565cc46ca68a6c9c38154d09416f30c766a0)<br>
2. Device B : Ubuntu 22.04.2 LTS, Ubuntu Software v202304121408
...## Describe your environment
- Device model: <br>
1. Device A : Samsung SM-T720, Android 11 API 30, Master (3f87565cc46ca68a6c9c38154d09416f30c766a0)<br>
2. Device B : Ubuntu 22.04.2 LTS, Ubuntu Software v202304121408
## Steps to reproduce
- Can you reproduce the bug: at will
- Steps:
1. Create new account with device B
2. Quickly send friend invite to device A (if I wait like 30s I don't have the bug anymore)
- Actual result: Device A doesnt receive the friend invite. I get some logs telling it didnt work.
## Additional information
![Kazam_screencast_00004](/uploads/bce944097ec419cd2b8293d38f43b098/Kazam_screencast_00004.webm)
![device-2023-05-01-114418](/uploads/1f9a46a02f0386a9528a96f2e778b1a4/device-2023-05-01-114418.mp4)
```
2023-05-01 11:43:33.145 22549-22746 libjami cx.ring W [1682955813.145|22746|account_manager.cpp :337 ] Found invalid peer device: 89879ec18abb54e187cb34bbab78cec3d76929dc15017499bcdb5316f5e581a0
2023-05-01 11:43:33.146 22549-22746 libjami cx.ring W [1682955813.146|22746|account_manager.cpp :385 ] [Auth] Discarding message from invalid peer certificate
2023-05-01 11:43:33.152 22549-22746 libjami cx.ring W [1682955813.152|22746|account_manager.cpp :337 ] Found invalid peer device: 89879ec18abb54e187cb34bbab78cec3d76929dc15017499bcdb5316f5e581a0
2023-05-01 11:43:33.152 22549-22746 libjami cx.ring W [1682955813.152|22746|account_manager.cpp :385 ] [Auth] Discarding message from invalid peer certificate
```
### Notes
(Sébastien):
This may be due to the fact than the device key is not present on the DHT during the first seconds. So, the Android device will not find any certificate when receiving the trust request.
One possible solution would be to wait that deviceAnnounced_ is true before sending trust request or other DHT values.https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/661unknown PortAudio functions2023-12-27T18:02:17ZNick Econopoulyunknown PortAudio functionsWhere are the functions `Pa_GetDefaultCommInputDevice()` and `Pa_GetDefaultCommOutputDevice();`? I can't find them in the PortAudio API.
(In `src/media/audio/portaudio/portaudiolayer.cpp` line 482)
If I replace them with their analogs...Where are the functions `Pa_GetDefaultCommInputDevice()` and `Pa_GetDefaultCommOutputDevice();`? I can't find them in the PortAudio API.
(In `src/media/audio/portaudio/portaudiolayer.cpp` line 482)
If I replace them with their analogs `Pa_GetDefaultInputDevice()` and `Pa_GetDefaultOutputDevice`, I get a linking error:
```
FAILED: bin/dbus/jamid
c++ -o bin/dbus/jamid bin/dbus/jamid.p/dbuscallmanager.cpp.o bin/dbus/jamid.p/dbusclient.cpp.o bin/dbus/jamid.p/dbusconfigurationmanager.cpp.o bin/dbus/jamid.p/dbusinstance.cpp.o bin/dbus/jamid.p/dbuspresencemanager.cpp.o bin/dbus/jamid.p/main.cpp.o bin/dbus/jamid.p/dbusvideomanager.cpp.o bin/dbus/jamid.p/dbuspluginmanagerinterface.cpp.o -Wl,--as-needed -Wl,--no-undefined -Wl,--start-group src/libjami.a /home/wrycode/build/jami-daemon-git/src/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libdbus-c++-1.a /usr/lib/libdbus-1.so -pthread /home/wrycode/build/jami-daemon-git/src/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libopendht.a /home/wrycode/build/jami-daemon-git/src/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libhttp_parser.a /usr/lib/libgnutls.so /usr/lib/libnettle.so /usr/lib/libargon2.so -lrt -ldl /usr/lib/libjsoncpp.so /usr/lib/libssl.so /usr/lib/libcrypto.so /home/wrycode/build/jami-daemon-git/src/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpjsua2-x86_64-pc-linux-gnu.a /usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../lib/libstdc++.so /home/wrycode/build/jami-daemon-git/src/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpjsua-x86_64-pc-linux-gnu.a /home/wrycode/build/jami-daemon-git/src/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpjsip-ua-x
86_64-pc-linux-gnu.a /home/wrycode/build/jami-daemon-git/src/ring-daemon/contrib/x86_64-pc-linux-g
nu/lib/libpjsip-simple-x86_64-pc-linux-gnu.a /home/wrycode/build/jami-daemon-git/src/ring-daemon/c
ontrib/x86_64-pc-linux-gnu/lib/libpjsip-x86_64-pc-linux-gnu.a /home/wrycode/build/jami-daemon-git/
src/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpjmedia-codec-x86_64-pc-linux-gnu.a /home/wryco
de/build/jami-daemon-git/src/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpjmedia-videodev-x86_6
4-pc-linux-gnu.a /home/wrycode/build/jami-daemon-git/src/ring-daemon/contrib/x86_64-pc-linux-gnu/l
ib/libpjmedia-audiodev-x86_64-pc-linux-gnu.a /home/wrycode/build/jami-daemon-git/src/ring-daemon/c
ontrib/x86_64-pc-linux-gnu/lib/libpjmedia-x86_64-pc-linux-gnu.a /home/wrycode/build/jami-daemon-gi
t/src/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpjnath-x86_64-pc-linux-gnu.a /home/wrycode/bu
ild/jami-daemon-git/src/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpjlib-util-x86_64-pc-linux-
gnu.a /home/wrycode/build/jami-daemon-git/src/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpj-x8
6_64-pc-linux-gnu.a /home/wrycode/build/jami-daemon-git/src/ring-daemon/contrib/x86_64-pc-linux-gn
u/lib/libsrtp-x86_64-pc-linux-gnu.a /home/wrycode/build/jami-daemon-git/src/ring-daemon/contrib/x8
6_64-pc-linux-gnu/lib/libyuv-x86_64-pc-linux-gnu.a /usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../.
./../lib/libopus.so /usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../lib/libvpx.so /usr/lib/gcc
/x86_64-pc-linux-gnu/11.1.0/../../../../lib/libuuid.so -lm -lpthread /usr/lib/gcc/x86_64-pc-linux-
gnu/11.1.0/../../../../lib/libgnutls.so /usr/lib/libgit2.so /usr/lib/libsecp256k1.so /usr/lib/liba
vcodec.so /usr/lib/libavfilter.so /usr/lib/libavdevice.so /usr/lib/libavformat.so /usr/lib/libswsc
ale.so /usr/lib/libswresample.so /usr/lib/libavutil.so /usr/lib/libspeexdsp.so /home/wrycode/build
/jami-daemon-git/src/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libfmt.a /usr/lib/libyaml-cpp.so
/usr/lib/libz.so /usr/lib/libasound.so /usr/lib/libpulse.so /usr/lib/libjack.so /usr/lib/libportau
dio.so /home/wrycode/build/jami-daemon-git/src/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libupnp
.a /home/wrycode/build/jami-daemon-git/src/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libixml.a -
lnatpmp /usr/lib/libwebrtc_audio_processing.so /usr/lib/libudev.so /usr/lib/libarchive.so -Wl,--en
d-group
/usr/bin/ld: src/libjami.a(jamidht_jamiaccount.cpp.o): in function `std::_MakeUniq<jami::TransferC
hannelHandler>::__single_object std::make_unique<jami::TransferChannelHandler, std::shared_ptr<jam
i::JamiAccount>, jami::ConnectionManager&>(std::shared_ptr<jami::JamiAccount>&&, jami::ConnectionM
anager&)':
/usr/include/c++/11.1.0/bits/unique_ptr.h:962: undefined reference to `jami::TransferChannelHandle
r::TransferChannelHandler(std::shared_ptr<jami::JamiAccount> const&, jami::ConnectionManager&)'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
```https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/779conference: detached host appearing2023-12-27T18:01:47ZAline Gondim Santosconference: detached host appearingJoin a rdv from two different devices;
Crash one of them (force jami quit without correctly ending the call)
On the other one you will see the host in the place of this crashed participant. If the crashed participant is still there (a ...Join a rdv from two different devices;
Crash one of them (force jami quit without correctly ending the call)
On the other one you will see the host in the place of this crashed participant. If the crashed participant is still there (a frozen component), you can change the layout one or two times and the host will take its place.
Expected: the crashed participant should disappear and the host should not take its place.Aline Gondim SantosAline Gondim Santoshttps://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/683pjnath/turn_session: Invalid timer event2023-12-18T14:48:59ZOlivier Dionpjnath/turn_session: Invalid timer event- Scenario: peer-monitor
- Commit: 0916e577f426ee7da4a6ac8c8240546c13486ca6
- pjproject patch (patchset 4): https://review.jami.net/c/pjproject/+/20080
Error:
```
agent.exe: ../src/pjnath/turn_session.c:2256: on_timer_event: Assertion `...- Scenario: peer-monitor
- Commit: 0916e577f426ee7da4a6ac8c8240546c13486ca6
- pjproject patch (patchset 4): https://review.jami.net/c/pjproject/+/20080
Error:
```
agent.exe: ../src/pjnath/turn_session.c:2256: on_timer_event: Assertion `!"Unknown timer event"' failed.
```
- [active.log.gz](/uploads/de886c3b15f051bd982d98b5c7ae1bff/active.log.gz)
- [passive.log.gz](/uploads/78c08c7c270c78dd29f915fbf30c8ad5/passive.log.gz)
- [gdb.txt](/uploads/79d1aed39fedee2b52110ceca164e619/gdb.txt) (abort in thread 33)https://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/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/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/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/162Call-Swarm: link to current rdv2023-11-17T16:32:48ZSébastien BlinCall-Swarm: link to current rdv+ Modify messages to use the "rendezvous" word in non 1:1
+ Add a priority to get the best host (mobile/non mobile/ipv6/resources)
+ Maybe use the DRT to avoid to connect to a non connected mobile.+ Modify messages to use the "rendezvous" word in non 1:1
+ Add a priority to get the best host (mobile/non mobile/ipv6/resources)
+ Maybe use the DRT to avoid to connect to a non connected mobile.Swarm-chat2023-03-31https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/903Blocked contact: Toggling own account "Allow calls from unknown contact" duri...2023-11-17T16:30:12ZElysBlocked contact: Toggling own account "Allow calls from unknown contact" during a call / file transfer will create two times the same blocked contact each timerelated: https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/886
<table>
<tr>
<th>
EDIT: Same issue if the Android user previously tried to send an attachment (and/or a text message?) BEFORE the desktop user blocked the Android ...related: https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/886
<table>
<tr>
<th>
EDIT: Same issue if the Android user previously tried to send an attachment (and/or a text message?) BEFORE the desktop user blocked the Android user
If it is file transfer: Every time the desktop user disables and enables the settings "Allow calls from unknown contact" (although it is not a call) the desktop user gets the same contact twice (so 2 -\> 4 -\> 6 -\> 8 etc.) for another time
</th>
</tr>
</table>
Use the beta newest version of Jami (Desktop and Android) with patch: https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/886#note_45676
Steps to reproduce:
1. You can make a call (Jami account 1 (Android) -\> Jami account 2(desktop))
2. Now on desktop (using Jami account 2) block Jami account 1
3. If the desktop user goes to settings he can view the blocked contact (only 1 times the same contact)
4. Now try to make a call Jami account 1 (Android) -\> Jami account 2(desktop)
5. During the Android user makes a call the desktop user turns off the option "Allow calls from unknown contacts" and immediately turns on the option "Allow calls from unknown contacts" again
6. Although the Android user can't call the desktop user anymore, the desktop user will get the same contact twice in the settings "blocked contact"
7. Each time the desktop user repeats these steps he gets the same contact twice again (so in total you'll view the Android user 5 times (1) blocked, 2) two times the same contact: Toggling own account "Allow contacts from unknown contact" 3) two times the same contact: Toggling own account "Allow contacts from unknown contact")
![blockedsamecontact.png](/uploads/72c27565420cdd495194bb7e22a29135/blockedsamecontact.png)
---
Next issue:
If the desktop user just unblocks one of the five / ten same contacts (/Jami account 1 (Android) he'll get the contact in the contact list back again showing call "Finished"
![Finished.png](/uploads/a6d120a453fa66c081136d19c43c3fd2/Finished.png)
---
Next issue:
If the desktop user unblocks all (same) blocked contact it still does not work:
All users (Desktop and Android) have to exit Jami and enter Jami again.
Then the Android user that has been blocked is not listed under "blocked contact" on Jami desktop anymore and communication works.https://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/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/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/485Rework of the file streaming feature2023-11-09T20:43:58ZPierre LespagnolRework of the file streaming featureUse the media player to stream filesUse the media player to stream filesBacklogAline Gondim SantosAline Gondim Santoshttps://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.