jami-daemon issueshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues2023-08-11T22:29:22Zhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/885Cannot create swarm with " " as display name2023-08-11T22:29:22ZLéo Banno-CloutierCannot create swarm with " " as display nameSteps to reproduce:
- Set display name to " "
- Create a swarm
Expected: Create a swarm
Actual: See image
![image](/uploads/7fdd42e9f16c2eda948563dad7559091/image.png)
Seems like the git repo cannot be initialized with a name such as...Steps to reproduce:
- Set display name to " "
- Create a swarm
Expected: Create a swarm
Actual: See image
![image](/uploads/7fdd42e9f16c2eda948563dad7559091/image.png)
Seems like the git repo cannot be initialized with a name such as " ", at line 541 of `src/jamidht/conversationrepository.cpp`
Logs:
```
[1691438791.935|36468|conversationrepository.cpp:510 ] Initial files added in ~/.local/share/jami/9b5b175723e24974/conversations/14991692706426679693/
[1691438791.935|36468|conversationrepository.cpp:541 ] Unable to create a commit signature.
[1691438791.935|36468|conversationrepository.cpp:2587] Couldn't create initial commit in ~/.local/share/jami/9b5b175723e24974/conversations/14991692706426679693
[1691438792.000|36485|message_engine.cpp :174 ] [message 8353015570259340] Message sent: success
[1691438792.000|36485|message_engine.cpp :191 ] [message 8353015570259340] Status changed to SENT
[1691438792.000|36498|message_engine.cpp :346 ] [Account 4904fceb49ead11e] saved 3 messages to ~/.cache/jami/4904fceb49ead11e/messages
[1691438792.400|36468|conversation_module.cpp :1560] [Account 9b5b175723e24974] Error while generating a conversation Couldn't create repository
[1691438792.400|36468|conversation_module.cpp :2222] Conversation doesn't exist
[1691438792.400|36468|conversation_module.cpp :2437] Conversation not found
```Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/884Verification failed with manually created plugin2023-08-07T14:22:44ZLéo Banno-CloutierVerification failed with manually created pluginSteps to reproduce:
1. Compile your own Jami plugin.
2. Click the "Install manually" button on Jami and try installing the plugin.
Expected: The plugin should be installed
Actual: Since the plugin store patch, every plugin installed on...Steps to reproduce:
1. Compile your own Jami plugin.
2. Click the "Install manually" button on Jami and try installing the plugin.
Expected: The plugin should be installed
Actual: Since the plugin store patch, every plugin installed on Jami have to contain a valid certificate, but this check should be disabled on manually installed plugins, to make it easier to develop and share small plugins without having the need to make it certified by Savoir-faire Linux.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/883complete C ABI for plugins (then Python/JS)2023-11-20T14:09:49ZLéo Banno-Cloutiercomplete C ABI for plugins (then Python/JS)I tried writing a Jami plugin in Rust, and so far, the plugin starts as expected, however I have a hard time invoking services such as `getPluginPreferences` and `getPluginAccPreferences`.
`invokeService` takes `(const JAMI_PluginAPI* a...I tried writing a Jami plugin in Rust, and so far, the plugin starts as expected, however I have a hard time invoking services such as `getPluginPreferences` and `getPluginAccPreferences`.
`invokeService` takes `(const JAMI_PluginAPI* api, const char* name, void* data)` as parameters, and the `void *` data variable gets casted to c++ types, such as `std::string` and `std::map`, which makes the ABI not completely C compatible. I was able to make `getPluginDataPath` work by changing `static_cast<std::string>` to `static_cast<char*>`, and I'll see how far I can go without too much hassle.Léo Banno-CloutierLéo Banno-Cloutierhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/882pjsip CVE2023-09-07T18:50:01Zlinsuipjsip CVEhttps://github.com/pjsip/pjproject/security/advisories/GHSA-q9cp-8wcq-7pfr
I have applied it for NixOS jami package. https://github.com/NixOS/nixpkgs/pull/246057https://github.com/pjsip/pjproject/security/advisories/GHSA-q9cp-8wcq-7pfr
I have applied it for NixOS jami package. https://github.com/NixOS/nixpkgs/pull/246057https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/879Crash (desktop client) if two peers make a call at the same time2023-07-26T18:58:38ZElysCrash (desktop client) if two peers make a call at the same timeusing the newest beta version of Jami
Windows 10 (device 1, username 1) <-> Android (device 2, username 2)
always possible to reproduce
Steps to reproduce:
- Launch Jami (all devices)
- Now make a video call Android -> Windows 10
- (B...using the newest beta version of Jami
Windows 10 (device 1, username 1) <-> Android (device 2, username 2)
always possible to reproduce
Steps to reproduce:
- Launch Jami (all devices)
- Now make a video call Android -> Windows 10
- (BEFORE the Windows 10 user will receive the call) After that immediately make a video call Windows 10 -> Android
- Jami on Android will receive the call
- After that - the desktop client crashes
Not sure what will happen if you try to reproduce the other directionhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/878CPU rapidly increased during video call when video muted on another side2023-09-08T15:24:55ZKateryna KostiukCPU rapidly increased during video call when video muted on another sidesteps to reproduce:
- Start a video call between A and B.
- Monitor CPU usage on A.
- Mute video on B.
- On A, CPU usage increases and stays high.steps to reproduce:
- Start a video call between A and B.
- Monitor CPU usage on A.
- Mute video on B.
- On A, CPU usage increases and stays high.Adrien BéraudSébastien BlinAdrien Béraudhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/877Incompatible with fmt >= 102023-09-07T18:50:23ZDavid RungeIncompatible with fmt >= 10Hi! We're currently attempting rebuilds against fmt 10 on Arch Linux (https://archlinux.org/todo/fmt-1000/).
Unfortunately, jami-daemon is not yet compatible and building it I run into:
```
[22/157] Compiling C++ object src/libjami.so....Hi! We're currently attempting rebuilds against fmt 10 on Arch Linux (https://archlinux.org/todo/fmt-1000/).
Unfortunately, jami-daemon is not yet compatible and building it I run into:
```
[22/157] Compiling C++ object src/libjami.so.13.7.0.p/connectivity_security_tls_session.cpp.o
FAILED: src/libjami.so.13.7.0.p/connectivity_security_tls_session.cpp.o
c++ -Isrc/libjami.so.13.7.0.p -Isrc -I../jami-daemon/src -I. -I../jami-daemon -I../jami-daemon/src/jami -I../jami-daemon/src/media -I../jami-daemon/src/jamidht/eth -I/usr/include/p11-kit-1 -I/build/jami-daemon/src/jami-daemon/contrib/x86_64-pc-linux-gnu/include -I/usr/include/upnp -I/usr/include/webrtc_audio_processin
g -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=gnu++17 -DHAVE_CONFIG_H -DLIBJAMI_BUILD -Djami_EXPORTS -DASIO_STANDALONE -DMSGPACK_NO_BOOST -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protect
ion -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/build/jami-daemon/src=/usr/src/debug/jami-daemon -flto=auto -fpermissive -fPIC -DWEBRTC_AUDIO_PROCESSING_ONLY_BUILD -DWEBRTC_POSIX -D_REENTRANT -DPJ_AUTOCONF=1 -DPJ_IS_BIG_ENDIAN=0 -DPJ_IS_LITTLE_ENDIAN=1 -pthread -MD -MQ src/libjami.so.13.7.0.p/conne
ctivity_security_tls_session.cpp.o -MF src/libjami.so.13.7.0.p/connectivity_security_tls_session.cpp.o.d -o src/libjami.so.13.7.0.p/connectivity_security_tls_session.cpp.o -c ../jami-daemon/src/connectivity/security/tls_session.cpp
In file included from ../jami-daemon/src/manager.h:38,
from ../jami-daemon/src/connectivity/security/tls_session.cpp:32:
../jami-daemon/src/scheduled_executor.h:108: warning: ignoring ‘#pragma GCC pop’ [-Wunknown-pragmas]
108 | #pragma GCC pop
|
../jami-daemon/src/scheduled_executor.h:158: warning: ignoring ‘#pragma GCC pop’ [-Wunknown-pragmas]
158 | #pragma GCC pop
|
In file included from ../jami-daemon/src/logger.h:27,
from ../jami-daemon/src/connectivity/security/tls_session.cpp:29:
/usr/include/fmt/core.h: In instantiation of ‘constexpr decltype (ctx.begin()) fmt::v10::detail::parse_format_specs(ParseContext&) [with T = gnutls_credentials_type_t; ParseContext = compile_parse_context<char>; decltype (ctx.begin()) = const char*]’:
/usr/include/fmt/core.h:2620:22: required from ‘constexpr fmt::v10::detail::format_string_checker<Char, Args>::format_string_checker(fmt::v10::basic_string_view<Char>) [with Char = char; Args = {gnutls_credentials_type_t}]’
/usr/include/fmt/core.h:2670:56: required from ‘void fmt::v10::detail::check_format_string(S) [with Args = {gnutls_credentials_type_t&}; S = jami::tls::TlsSession::TlsSessionImpl::handleStateHandshake(jami::tls::TlsSessionState)::<lambda()>::FMT_COMPILE_STRING; typename std::enable_if<is_compile_string<S>::value, in
t>::type <anonymous> = 0]’
/usr/include/fmt/core.h:2772:41: required from ‘fmt::v10::basic_format_string<Char, Args>::basic_format_string(const S&) [with S = jami::tls::TlsSession::TlsSessionImpl::handleStateHandshake(jami::tls::TlsSessionState)::<lambda()>::FMT_COMPILE_STRING; typename std::enable_if<std::is_convertible<const S&, fmt::v10::b
asic_string_view<Char> >::value, int>::type <anonymous> = 0; Char = char; Args = {gnutls_credentials_type_t&}]’
../jami-daemon/src/logger.h:173:51: required from ‘void jami::log::error(const char*, int, S&&, Args&& ...) [with S = jami::tls::TlsSession::TlsSessionImpl::handleStateHandshake(jami::tls::TlsSessionState)::<lambda()>::FMT_COMPILE_STRING; Args = {gnutls_credentials_type_t&}]’
../jami-daemon/src/connectivity/security/tls_session.cpp:1226:9: required from here
/usr/include/fmt/core.h:2561:10: error: use of deleted function ‘fmt::v10::formatter<T, Char, Enable>::formatter() [with T = gnutls_credentials_type_t; Char = char; Enable = void]’
2561 | return formatter<mapped_type, char_type>().parse(ctx);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/fmt/core.h:792:3: note: declared here
792 | formatter() = delete;
| ^~~~~~~~~
/usr/include/fmt/core.h: In instantiation of ‘constexpr fmt::v10::detail::value<Context> fmt::v10::detail::make_value(T&&) [with Context = fmt::v10::basic_format_context<fmt::v10::appender, char>; T = gnutls_credentials_type_t&]’:
/usr/include/fmt/core.h:1711:29: required from ‘constexpr fmt::v10::detail::value<Context> fmt::v10::detail::make_arg(T&&) [with bool IS_PACKED = true; Context = fmt::v10::basic_format_context<fmt::v10::appender, char>; type <anonymous> = fmt::v10::detail::type::custom_type; T = gnutls_credentials_type_t&; typename
std::enable_if<IS_PACKED, int>::type <anonymous> = 0]’
/usr/include/fmt/core.h:1827:77: required from ‘constexpr fmt::v10::format_arg_store<Context, Args>::format_arg_store(T&& ...) [with T = {gnutls_credentials_type_t&}; Context = fmt::v10::basic_format_context<fmt::v10::appender, char>; Args = {gnutls_credentials_type_t}]’
/usr/include/fmt/core.h:1844:31: required from ‘constexpr fmt::v10::format_arg_store<Context, typename std::remove_cv<typename std::remove_reference<T>::type>::type ...> fmt::v10::make_format_args(T&& ...) [with Context = basic_format_context<appender, char>; T = {gnutls_credentials_type_t&}]’
/usr/include/fmt/core.h:2817:44: required from ‘std::string fmt::v10::format(format_string<T ...>, T&& ...) [with T = {gnutls_credentials_type_t&}; std::string = std::__cxx11::basic_string<char>; format_string<T ...> = basic_format_string<char, gnutls_credentials_type_t&>]’
../jami-daemon/src/logger.h:173:51: required from ‘void jami::log::error(const char*, int, S&&, Args&& ...) [with S = jami::tls::TlsSession::TlsSessionImpl::handleStateHandshake(jami::tls::TlsSessionState)::<lambda()>::FMT_COMPILE_STRING; Args = {gnutls_credentials_type_t&}]’
../jami-daemon/src/connectivity/security/tls_session.cpp:1226:9: required from here
/usr/include/fmt/core.h:1691:7: error: static assertion failed: Cannot format an argument. To make type T formattable provide a formatter<T> specialization: https://fmt.dev/latest/api.html#udt
1691 | formattable,
| ^~~~~~~~~~~
/usr/include/fmt/core.h:1691:7: note: ‘formattable’ evaluates to false
```
An update to current fmt would be much appreciated. Thanks!https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/876Incompatible with libgit2 1.7.02023-07-21T14:26:03ZDavid RungeIncompatible with libgit2 1.7.0Hi! I'm currently trying to rebuild this project against libgit2 1.7.0 on Arch Linux.
I'm building from https://git.jami.net/savoirfairelinux/jami-daemon/-/commit/0ec1d2e35301d5d420606288f804b376d1fd6be5 since [there are no releases](ht...Hi! I'm currently trying to rebuild this project against libgit2 1.7.0 on Arch Linux.
I'm building from https://git.jami.net/savoirfairelinux/jami-daemon/-/commit/0ec1d2e35301d5d420606288f804b376d1fd6be5 since [there are no releases](https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/124) (:sob:) and some time after that this project fails to build against opendht 2.5.5 (which we package), due to [updating the vendored opendht to a prerelease version](https://git.jami.net/savoirfairelinux/jami-daemon/-/commit/12288b33c7f6f360892bff0a5cc6aaedc4721103) (:sob:).
I see many instances of:
```
/usr/include/git2/sys/transport.h:116:17: error: ‘git_oidarray’ has not been declared
116 | git_oidarray *out,
| ^~~~~~~~~~~~
```
Full build log:
[jami-daemon-20230620-1-x86_64-build.log](/uploads/4432f30e6342f4a7229db6706b6d5222/jami-daemon-20230620-1-x86_64-build.log)
FWIW: You are currently vendoring [libgit2 1.1.0](https://github.com/libgit2/libgit2/releases/tag/v1.1.0) in [jami-20230619.1](https://dl.jami.net/release/tarballs/jami-20230619.1.tar.gz) which is from 2020. I am not really sure if this version is affected by [CVE-2023-22742](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-22742), but either way it would be very good to see an update to this library, as it currently blocks our rebuild of libgit2https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/875Video starts automatically when creating a conference by adding a participant2023-07-31T12:51:48ZAlexander Lussier-CullenVideo starts automatically when creating a conference by adding a participantPlease specify the following:
- Jami version: jami-client-android@8c707034cf7dfaba5eb788f9d5b45c06888e0d96
- Device model: Emulator (Android1) & Samsung A14 (Android2)
- Android version: 9 (Android1) & 13 (Android2)
## Steps to r...Please specify the following:
- Jami version: jami-client-android@8c707034cf7dfaba5eb788f9d5b45c06888e0d96
- Device model: Emulator (Android1) & Samsung A14 (Android2)
- Android version: 9 (Android1) & 13 (Android2)
## Steps to reproduce
- Can you reproduce the bug: at will
- Steps:
1. Start an audio call from Android1 -> QT
2. Add a participant of Android2
3. Android2 starts their camera
- Actual result: Android1 now has their camera started and shared
- Expected result: Android1 doesn't have their camera started and sharedAlexander Lussier-CullenAlexander Lussier-Cullenhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/874Unit test - mock camera to allow to use video in unit tests2023-07-17T12:11:22ZSébastien BlinUnit test - mock camera to allow to use video in unit testsFor now we don't check the video from the unit tests as there is generally no camera on the build machinesFor now we don't check the video from the unit tests as there is generally no camera on the build machineshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/872[SIP-Account] (Audio-)Call recording doesn't work2024-01-26T17:09:13ZElys[SIP-Account] (Audio-)Call recording doesn't workusing Jami (Beta): 202401121257 on Windows
- Make a call (SIM-call -\> SIP-Account (Jami))
- Now record the call
- After the call you view the recordings: However if you want to listen to the audio recording - even if the file should ha...using Jami (Beta): 202401121257 on Windows
- Make a call (SIM-call -\> SIP-Account (Jami))
- Now record the call
- After the call you view the recordings: However if you want to listen to the audio recording - even if the file should have a duration of 20 seconds - every music player can only "play" the file 0:00 seconds.
Note:
- NO Issues if I recorded a Jami call (Jami account 1 (Android) -\> Jami account 2(Windows 10)) - and it does NOT matter if I record an audio call or a video call
EDIT: Not sure if SIP-video call recording works (with / without sound) or combined with Jami accounts.
Maybe if you or other peers enable / disable your/their camera and/or enable/disable your/their own microphones during the call you also get recording issues? https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/872#note_44414https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/871Lock on long merge commits2023-10-26T17:52:03ZSébastien BlinLock on long merge commitsOn Jami:Core, sometimes, we can't send messages. A thread seems to be blocked on git_merge_commits (with a lot of merge_annotated_commit)
The reason is still unclear.On Jami:Core, sometimes, we can't send messages. A thread seems to be blocked on git_merge_commits (with a lot of merge_annotated_commit)
The reason is still unclear.Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/873Starting video doesn't work2023-07-31T12:49:11ZAlexander Lussier-CullenStarting video doesn't work- Jami version: jami-client-android@48be2a8b11273c84dff7e858148c2b197b51f615
- Device model: Moto G Fast
- Android version: 11
## Steps to reproduce
- Steps:
1. Start video call from QT -> Android
2. Answer call with au...- Jami version: jami-client-android@48be2a8b11273c84dff7e858148c2b197b51f615
- Device model: Moto G Fast
- Android version: 11
## Steps to reproduce
- Steps:
1. Start video call from QT -> Android
2. Answer call with audio only on Android
3. Turn on the camera on Android
- Actual result: The QT client receives no video and the Android client preview is blacked out.
- Expected result: The QT client receives video and the Android client preview shows the camera feed.
## Additional information
* Even with my fixes made for screensharing, this can be reproduce by doing the same with a screenshare instead of the camera.
* Simply cycling the camera after the first time fails makes it workAlexander Lussier-CullenAlexander Lussier-Cullenhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/870pupnp avoid select() for sockets2024-03-06T16:25:35ZSébastien Blinpupnp avoid select() for sockets`select()` uses FD_SET() that can lead to random crashes unrelated to the number of files authorized per process.
This is used by `pupnp`, this may result in some backtraces like:
```
*** buffer overflow detected ***: terminated
Threa...`select()` uses FD_SET() that can lead to random crashes unrelated to the number of files authorized per process.
This is used by `pupnp`, this may result in some backtraces like:
```
*** buffer overflow detected ***: terminated
Thread 242 "jami" received signal SIGABRT, Aborted.
[Switching to Thread 0x7ffe6cf81640 (LWP 246791)]
__pthread_kill_implementation (no_tid=0, signo=6, threadid=140730726618688) at ./nptl/pthread_kill.c:44
44 ./nptl/pthread_kill.c: No such file or directory.
(gdb) bt
#0 __pthread_kill_implementation (no_tid=0, signo=6, threadid=140730726618688)
at ./nptl/pthread_kill.c:44
#1 __pthread_kill_internal (signo=6, threadid=140730726618688) at ./nptl/pthread_kill.c:78
#2 __GI___pthread_kill (threadid=140730726618688, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#3 0x00007ffff2442476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#4 0x00007ffff24287f3 in __GI_abort () at ./stdlib/abort.c:79
#5 0x00007ffff24896f6 in __libc_message
(action=action@entry=do_abort, fmt=fmt@entry=0x7ffff25db943 "*** %s ***: terminated\n")
at ../sysdeps/posix/libc_fatal.c:155
#6 0x00007ffff253676a in __GI___fortify_fail
(msg=msg@entry=0x7ffff25db8e9 "buffer overflow detected") at ./debug/fortify_fail.c:26
#7 0x00007ffff25350c6 in __GI___chk_fail () at ./debug/chk_fail.c:28
#8 0x00007ffff25366ab in __fdelt_chk (d=<optimized out>) at ./debug/fdelt_chk.c:25
#9 0x00007ffff3961625 in sock_read_write
(info=info@entry=0x7ffe6cf7aa00, buffer=0x7fff854dc120 "GET /dyndev/uuid:2d27b940-da93-441d-b519-acf1fbd1d460 HTTP/1.1\r\nHOST: 192.168.1.1:5431\r\nDATE: Tue, 11 Jul 2023 16:38:42 GMT\r\nCONNECTION: close\r\nUSER-AGENT: Linux/5.19.0-46-generic, UPnP/1.0, Portable "..., bufsize=bufsize@entry=232, timeoutSecs=timeoutSecs@entry=0x7ffe6cf7a9ec, bRead=bRead@entry=0) at src/genlib/net/sock.c:187
#10 0x00007ffff396183c in sock_write
(info=info@entry=0x7ffe6cf7aa00, buffer=<optimized out>, bufsize=bufsize@entry=232, timeoutSecs=timeoutSecs@entry=0x7ffe6cf7a9ec) at src/genlib/net/sock.c:292
#11 0x00007ffff396480c in http_SendMessage
(info=info@entry=0x7ffe6cf7aa00, TimeOut=TimeOut@entry=0x7ffe6cf7a9ec, fmt=0x7ffff44dda77 "",
fmt@entry=0x7ffff44dda76 "b") at src/genlib/net/http/httpreadwrite.c:698
#12 0x00007ffff3964913 in http_RequestAndResponse
(destination=destination@entry=0x7ffe6cf7ab10, request=0x7fff854dc120 "GET /dyndev/uuid:2d27b940-da93-441d-b519-acf1fbd1d460 HTTP/1.1\r\nHOST: 192.168.1.1:5431\r\nDATE: Tue, 11 Jul 2023 16:38:42 GMT\r\nCONNECTION: close\r\nUSER-AGENT: Linux/5.19.0-46-generic, UPnP/1.0, Portable "..., request_length=232, req_method=req_method@entry=HTTPMETHOD_GET, timeout_secs=<optimized out>,
timeout_secs@entry=30, response=response@entry=0x7ffe6cf7abe0)
at src/genlib/net/http/httpreadwrite.c:788
#13 0x00007ffff3965eb0 in http_Download
(url_str=<optimized out>, timeout_secs=timeout_secs@entry=30, document=document@entry=0x7ffe6cf7ae48, doc_length=doc_length@entry=0x7ffe6cf7ae20, content_type=content_type@entry=0x7ffe6cf7ae50 "\006") at src/genlib/net/http/httpreadwrite.c:897
#14 0x00007ffff39574d0 in UpnpDownloadUrlItem
(url=<optimized out>, outBuf=outBuf@entry=0x7ffe6cf7ae48, contentType=contentType@entry=0x7ffe6cf7ae50 "\006") at src/api/upnpapi.c:3500
#15 0x00007ffff3957545 in UpnpDownloadXmlDoc (url=<optimized out>, xmlDoc=0x7ffe6cf7af48)
at src/api/upnpapi.c:3519
#16 0x00007ffff327342e in jami::upnp::PUPnP::downLoadIgdDescription(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
(this=0x7fff9c001f00, locationUrl="http://192.168.1.1:5431/dyndev/uuid:2d27b940-da93-441d-b519-acf1fbd1d460") at connectivity/upnp/protocol/pupnp/pupnp.cpp:840
#17 0x00007ffff3272ce3 in operator()() const (__closure=0x7fff9c015f50)
at connectivity/upnp/protocol/pupnp/pupnp.cpp:831
#18 0x00007ffff327cf16 in std::__invoke_impl<void, jami::upnp::PUPnP::processDiscoverySearchResult(const string&, const string&, const jami::IpAddr&)::<lambda()>&>(std::__invoke_other, struct {...} &)
(__f=...) at /usr/include/c++/11/bits/invoke.h:61
#19 0x00007ffff327b883 in std::__invoke_r<void, jami::upnp::PUPnP::processDiscoverySearchResult(const string&, const string&, const jami::IpAddr&)::<lambda()>&>(struct {...} &) (__fn=...)
at /usr/include/c++/11/bits/invoke.h:111
--Type <RET> for more, q to quit, c to continue without paging--
#20 0x00007ffff327a739 in std::_Function_handler<void(), jami::upnp::PUPnP::processDiscoverySearchResult(const string&, const string&, const jami::IpAddr&)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/11/bits/std_function.h:290
#21 0x00007ffff38118a7 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<dht::ThreadPool::run(std::function<void ()>&&)::{lambda()#1}> > >::_M_run() ()
at /home/sblin/Projects/jami-project/client-qt/daemon/src/.libs/libjami.so.0
#22 0x00007ffff28dc2b3 in () at /lib/x86_64-linux-gnu/libstdc++.so.6
#23 0x00007ffff2494b43 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#24 0x00007ffff2526a00 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
(gdb)
```
Instead of this, it should use `poll()` to avoid this kind of limitation.https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/869JAMS account: Blocked users can still communicate2023-10-26T17:51:49ZLéo Banno-CloutierJAMS account: Blocked users can still communicate1. User A blocks user B
2. User B sends a message to user A
Actual: User A receives a notification and a red dot of the icon in the system tray, but there isn't any new messages in the conversation list
Expected: User A blocked user B,...1. User A blocks user B
2. User B sends a message to user A
Actual: User A receives a notification and a red dot of the icon in the system tray, but there isn't any new messages in the conversation list
Expected: User A blocked user B, so it shouldn't get notified about itSébastien BlinLéo Banno-CloutierSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/864Deadlock/crash during account creation2023-06-26T13:33:17ZAndreas TraczykDeadlock/crash during account creationThe following pseudo backtrace depicts a possible deadlock scenario:
thread 1
```
ConversationModule::loadConversations std::lock_guard<std::recursive_mutex> lock(configurationMutex_);
JamiAccount::loadAccount
JamiAccount::loa...The following pseudo backtrace depicts a possible deadlock scenario:
thread 1
```
ConversationModule::loadConversations std::lock_guard<std::recursive_mutex> lock(configurationMutex_);
JamiAccount::loadAccount
JamiAccount::loadConfig
Account::setAccountDetails std::lock_guard<std::mutex> lk(pimpl_->conversationsRequestsMtx_);
...
Manager::setAccountDetails
...
client onAccountAdded callback
```
thread 2
```
JamiAccount::getTrustRequests std::lock_guard<std::mutex> lk(pimpl_->conversationsRequestsMtx_);
ConversationModule::loadConversations std::lock_guard<std::recursive_mutex> lock(configurationMutex_);
ArchiveAccountManager::onArchiveLoaded
ArchiveAccountManager::createAccount
...
```https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/868Incomplete certificate detected2023-07-03T18:13:03ZP PIncomplete certificate detected````
OS: Fedora 37 x86_64
Jami Version:
jami-libqt-6.4.3-6.fc37.x86_64
jami-daemon-20230619.1-1.fc37.x86_64
jami-20230619.1-1.fc37.x86_64
From the Fedora 37 Stable repo. I upgraded from the previous stable release jami-20230323.
## St...````
OS: Fedora 37 x86_64
Jami Version:
jami-libqt-6.4.3-6.fc37.x86_64
jami-daemon-20230619.1-1.fc37.x86_64
jami-20230619.1-1.fc37.x86_64
From the Fedora 37 Stable repo. I upgraded from the previous stable release jami-20230323.
## Steps to reproduce
1. Start Jami
Actual result:
No communication is possible with any existing contacts.
Expected result:
Communications to continue after upgrading Jami.
## Additional information
Syslog shows:
Jun 21 14:12:40 host jami[13142]: New message added with id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Jun 21 14:12:40 host jami[13142]: Incomplete certificate detected xxxxxxxxxxxxxxxxxxxxxxxxxxx
Jun 21 14:12:40 host jami[13142]: Incomplete certificate detected xxxxxxxxxxxxxxxxxxxxxxxxxx
Jun 21 14:12:40 host jami[13142]: [Account xxxxxxxxxxxxxxxxxx] Ask xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx for a new SIP channel
Jun 21 14:12:40 host jami[13142]: Incomplete certificate detected xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Jun 21 14:12:43 host jami[13142]: [Account xxxxxxxxxxxxxxxx] New response received from xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Jun 21 14:12:45 host jami[13142]: [TLS] handshake failed: Error in the certificate.
Jun 21 14:12:48 host jami[13142]: Incomplete certificate detected xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Jun 21 14:12:48 host jami[13142]: Found invalid peer device: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Jun 21 14:12:48 host jami[13142]: [Account xxxxxxxxxxxxxxxx] Rejected untrusted connection request from xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx````Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/861Regression sdbus-cpp: Quit client doesn't leave daemon2023-06-15T19:17:20ZSébastien BlinRegression sdbus-cpp: Quit client doesn't leave daemon# Scenario
+ Launch client
+ Launch daemon
+ Quit client via systray
# Expected
Daemon should leave
# Current result
Daemon stays up# Scenario
+ Launch client
+ Launch daemon
+ Quit client via systray
# Expected
Daemon should leave
# Current result
Daemon stays upSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/860Crash in jami::ConnectionManager::setPublishedAddress2023-06-09T15:32:54ZSébastien BlinCrash in jami::ConnectionManager::setPublishedAddress# Scenario
+ none provided
+ stack unknown
# Expected Result
No crash
# Current result
```
Previous native crash #0 at 2023-06-09T04:15:35.153Z: crash 5 2077 cx.ring
Tombstone 2128
Cause 0: null pointer dereference
#0 /data/app/~...# Scenario
+ none provided
+ stack unknown
# Expected Result
No crash
# Current result
```
Previous native crash #0 at 2023-06-09T04:15:35.153Z: crash 5 2077 cx.ring
Tombstone 2128
Cause 0: null pointer dereference
#0 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so std::__ndk1::shared_ptr<jami::ConnectionManager::Impl>::operator->() const+12
#1 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so jami::ConnectionManager::setPublishedAddress(jami::IpAddr const&)+24
#2 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so jami::JamiAccount::connectivityChanged()+272
#3 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so libjami::connectivityChanged()+364
#4 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so Java_net_jami_daemon_JamiServiceJNI_connectivityChanged+20
#5 /apex/com.android.art/lib64/libart.so art_quick_generic_jni_trampoline+148
#6 /apex/com.android.art/lib64/libart.so nterp_helper+152
#7 [anon:dalvik-classes4.dex extracted in memory from /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!classes4.dex] net.jami.daemon.JamiService.connectivityChanged+0
#8 /apex/com.android.art/lib64/libart.so nterp_helper+52
#9 [anon:dalvik-classes5.dex extracted in memory from /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!classes5.dex] net.jami.services.HardwareService.connectivityChanged$lambda$0+0
#10 /apex/com.android.art/lib64/libart.so nterp_helper+52
#11 [anon:dalvik-classes5.dex extracted in memory from /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!classes5.dex] net.jami.services.HardwareService.$r8$lambda$F_lyARd9U_n_If3MkjH062wY9Kw+0
#12 /apex/com.android.art/lib64/libart.so nterp_helper+52
#13 [anon:dalvik-classes5.dex extracted in memory from /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!classes5.dex] net.jami.services.HardwareService$$ExternalSyntheticLambda3.run+0
#14 /apex/com.android.art/lib64/libart.so nterp_helper+7540
#15 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.Executors$RunnableAdapter.call+4
#16 /apex/com.android.art/lib64/libart.so nterp_helper+7540
#17 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.FutureTask.run+56
#18 /apex/com.android.art/lib64/libart.so nterp_helper+3924
#19 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run+38
#20 /apex/com.android.art/lib64/libart.so nterp_helper+7540
#21 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.ThreadPoolExecutor.runWorker+156
#22 /apex/com.android.art/lib64/libart.so nterp_helper+3924
#23 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.ThreadPoolExecutor$Worker.run+4
#24 /apex/com.android.art/lib64/libart.so nterp_helper+7540
#25 /apex/com.android.art/javalib/core-oj.jar java.lang.Thread.run+8
#26 /apex/com.android.art/lib64/libart.so art_quick_invoke_stub+556
#27 /apex/com.android.art/lib64/libart.so art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+156
#28 /apex/com.android.art/lib64/libart.so art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+400
#29 /apex/com.android.art/lib64/libart.so art::Thread::CreateCallback(void*)+1680
#30 /apex/com.android.runtime/lib64/bionic/libc.so __pthread_start(void*)+204
#31 /apex/com.android.runtime/lib64/bionic/libc.so __start_thread+64
Previous native crash #1 at 2023-06-09T04:15:24.943Z: crash 5 1329 cx.ring
Tombstone 1427
Cause 0: null pointer dereference
#0 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so std::__ndk1::shared_ptr<jami::ConnectionManager::Impl>::operator->() const+12
#1 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so jami::ConnectionManager::setPublishedAddress(jami::IpAddr const&)+24
#2 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so jami::JamiAccount::connectivityChanged()+272
#3 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so libjami::connectivityChanged()+364
#4 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so Java_net_jami_daemon_JamiServiceJNI_connectivityChanged+20
#5 /apex/com.android.art/lib64/libart.so art_quick_generic_jni_trampoline+148
#6 /apex/com.android.art/lib64/libart.so nterp_helper+152
#7 [anon:dalvik-classes4.dex extracted in memory from /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!classes4.dex] net.jami.daemon.JamiService.connectivityChanged+0
#8 /apex/com.android.art/lib64/libart.so nterp_helper+52
#9 [anon:dalvik-classes5.dex extracted in memory from /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!classes5.dex] net.jami.services.HardwareService.connectivityChanged$lambda$0+0
#10 /apex/com.android.art/lib64/libart.so nterp_helper+52
#11 [anon:dalvik-classes5.dex extracted in memory from /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!classes5.dex] net.jami.services.HardwareService.$r8$lambda$F_lyARd9U_n_If3MkjH062wY9Kw+0
#12 /apex/com.android.art/lib64/libart.so nterp_helper+52
#13 [anon:dalvik-classes5.dex extracted in memory from /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!classes5.dex] net.jami.services.HardwareService$$ExternalSyntheticLambda3.run+0
#14 /apex/com.android.art/lib64/libart.so nterp_helper+7540
#15 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.Executors$RunnableAdapter.call+4
#16 /apex/com.android.art/lib64/libart.so nterp_helper+7540
#17 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.FutureTask.run+56
#18 /apex/com.android.art/lib64/libart.so nterp_helper+3924
#19 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run+38
#20 /apex/com.android.art/lib64/libart.so nterp_helper+7540
#21 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.ThreadPoolExecutor.runWorker+156
#22 /apex/com.android.art/lib64/libart.so nterp_helper+3924
#23 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.ThreadPoolExecutor$Worker.run+4
#24 /apex/com.android.art/lib64/libart.so nterp_helper+7540
#25 /apex/com.android.art/javalib/core-oj.jar java.lang.Thread.run+8
#26 /apex/com.android.art/lib64/libart.so art_quick_invoke_stub+556
#27 /apex/com.android.art/lib64/libart.so art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+156
#28 /apex/com.android.art/lib64/libart.so art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+400
#29 /apex/com.android.art/lib64/libart.so art::Thread::CreateCallback(void*)+1680
#30 /apex/com.android.runtime/lib64/bionic/libc.so __pthread_start(void*)+204
#31 /apex/com.android.runtime/lib64/bionic/libc.so __start_thread+64
Previous native crash #2 at 2023-06-09T04:15:15.311Z: crash 5 468 cx.ring
Tombstone 555
Cause 0: null pointer dereference
#0 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so std::__ndk1::shared_ptr<jami::ConnectionManager::Impl>::operator->() const+12
#1 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so jami::ConnectionManager::setPublishedAddress(jami::IpAddr const&)+24
#2 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so jami::JamiAccount::connectivityChanged()+272
#3 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so libjami::connectivityChanged()+364
#4 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so Java_net_jami_daemon_JamiServiceJNI_connectivityChanged+20
#5 /apex/com.android.art/lib64/libart.so art_quick_generic_jni_trampoline+148
#6 /apex/com.android.art/lib64/libart.so nterp_helper+152
#7 [anon:dalvik-classes4.dex extracted in memory from /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!classes4.dex] net.jami.daemon.JamiService.connectivityChanged+0
#8 /apex/com.android.art/lib64/libart.so nterp_helper+52
#9 [anon:dalvik-classes5.dex extracted in memory from /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!classes5.dex] net.jami.services.HardwareService.connectivityChanged$lambda$0+0
#10 /apex/com.android.art/lib64/libart.so nterp_helper+52
#11 [anon:dalvik-classes5.dex extracted in memory from /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!classes5.dex] net.jami.services.HardwareService.$r8$lambda$F_lyARd9U_n_If3MkjH062wY9Kw+0
#12 /apex/com.android.art/lib64/libart.so nterp_helper+52
#13 [anon:dalvik-classes5.dex extracted in memory from /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!classes5.dex] net.jami.services.HardwareService$$ExternalSyntheticLambda3.run+0
#14 /apex/com.android.art/lib64/libart.so nterp_helper+7540
#15 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.Executors$RunnableAdapter.call+4
#16 /apex/com.android.art/lib64/libart.so nterp_helper+7540
#17 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.FutureTask.run+56
#18 /apex/com.android.art/lib64/libart.so nterp_helper+3924
#19 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run+38
#20 /apex/com.android.art/lib64/libart.so nterp_helper+7540
#21 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.ThreadPoolExecutor.runWorker+156
#22 /apex/com.android.art/lib64/libart.so nterp_helper+3924
#23 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.ThreadPoolExecutor$Worker.run+4
#24 /apex/com.android.art/lib64/libart.so nterp_helper+7540
#25 /apex/com.android.art/javalib/core-oj.jar java.lang.Thread.run+8
#26 /apex/com.android.art/lib64/libart.so art_quick_invoke_stub+556
#27 /apex/com.android.art/lib64/libart.so art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+156
#28 /apex/com.android.art/lib64/libart.so art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+400
#29 /apex/com.android.art/lib64/libart.so art::Thread::CreateCallback(void*)+1680
#30 /apex/com.android.runtime/lib64/bionic/libc.so __pthread_start(void*)+204
#31 /apex/com.android.runtime/lib64/bionic/libc.so __start_thread+64
Previous native crash #3 at 2023-06-09T04:15:05.040Z: crash 5 32443 cx.ring
Tombstone 32484
Cause 0: null pointer dereference
#0 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so std::__ndk1::shared_ptr<jami::ConnectionManager::Impl>::operator->() const+12
#1 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so jami::ConnectionManager::setPublishedAddress(jami::IpAddr const&)+24
#2 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so jami::JamiAccount::connectivityChanged()+272
#3 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so libjami::connectivityChanged()+364
#4 /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!libjami-jni.so Java_net_jami_daemon_JamiServiceJNI_connectivityChanged+20
#5 /apex/com.android.art/lib64/libart.so art_quick_generic_jni_trampoline+148
#6 /apex/com.android.art/lib64/libart.so nterp_helper+152
#7 [anon:dalvik-classes4.dex extracted in memory from /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!classes4.dex] net.jami.daemon.JamiService.connectivityChanged+0
#8 /apex/com.android.art/lib64/libart.so nterp_helper+52
#9 [anon:dalvik-classes5.dex extracted in memory from /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!classes5.dex] net.jami.services.HardwareService.connectivityChanged$lambda$0+0
#10 /apex/com.android.art/lib64/libart.so nterp_helper+52
#11 [anon:dalvik-classes5.dex extracted in memory from /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!classes5.dex] net.jami.services.HardwareService.$r8$lambda$F_lyARd9U_n_If3MkjH062wY9Kw+0
#12 /apex/com.android.art/lib64/libart.so nterp_helper+52
#13 [anon:dalvik-classes5.dex extracted in memory from /data/app/~~cr50t1rXPxkc7dMkdamN9w==/cx.ring-f8XAIIYSUWC3hqWsEj4BBA==/base.apk!classes5.dex] net.jami.services.HardwareService$$ExternalSyntheticLambda3.run+0
#14 /apex/com.android.art/lib64/libart.so nterp_helper+7540
#15 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.Executors$RunnableAdapter.call+4
#16 /apex/com.android.art/lib64/libart.so nterp_helper+7540
#17 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.FutureTask.run+56
#18 /apex/com.android.art/lib64/libart.so nterp_helper+3924
#19 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run+38
#20 /apex/com.android.art/lib64/libart.so nterp_helper+7540
#21 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.ThreadPoolExecutor.runWorker+156
#22 /apex/com.android.art/lib64/libart.so nterp_helper+3924
#23 /apex/com.android.art/javalib/core-oj.jar java.util.concurrent.ThreadPoolExecutor$Worker.run+4
#24 /apex/com.android.art/lib64/libart.so nterp_helper+7540
#25 /apex/com.android.art/javalib/core-oj.jar java.lang.Thread.run+8
#26 /apex/com.android.art/lib64/libart.so art_quick_invoke_stub+556
#27 /apex/com.android.art/lib64/libart.so art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+156
#28 /apex/com.android.art/lib64/libart.so art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+400
#29 /apex/com.android.art/lib64/libart.so art::Thread::CreateCallback(void*)+1680
#30 /apex/com.android.runtime/lib64/bionic/libc.so __pthread_start(void*)+204
#31 /apex/com.android.runtime/lib64/bionic/libc.so __start_thread+64
```