jami-daemon issueshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues2020-06-09T20:15:16Zhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/207[Jams] Nameservice should take the whole URL2020-06-09T20:15:16ZSébastien Blin[Jams] Nameservice should take the whole URL# Reproduce steps
+ Set https://192.168.49.120:8080/api/nameservice/ as a nameservice
# Expected result
The daemon should read the content of https://192.168.49.120:8080/api/nameservice/name/foo
# Current result
The daemon removes a...# Reproduce steps
+ Set https://192.168.49.120:8080/api/nameservice/ as a nameservice
# Expected result
The daemon should read the content of https://192.168.49.120:8080/api/nameservice/name/foo
# Current result
The daemon removes api/nameservice from the request (result: https://192.168.49.120:8080/name/foo)https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/610ICE/SIPCall - possible race condition in ICE initialization2021-09-15T14:23:37ZMohamed ChibaniICE/SIPCall - possible race condition in ICE initializationPossible race condition between JamiAccount::SIPStartCall() and SIPCall::initIceMediaTransport(). SIPCall::addLocalIceAttributes() is called by SIPStartCall() before the ice session is fully setup.
```
[1628703709.408|52540|ice_transpor...Possible race condition between JamiAccount::SIPStartCall() and SIPCall::initIceMediaTransport(). SIPCall::addLocalIceAttributes() is called by SIPStartCall() before the ice session is fully setup.
```
[1628703709.408|52540|ice_transport.cpp :791 ] [ice:0x7fff99480f00] added host stun config for UDP transport
[1628703709.422|52540|ice_transport.cpp :566 ] [ice:0x7fff99480f00] UDP initialization success
[1628703709.422|52540|ice_transport.cpp :630 ] [ice:0x7fff99480f00] as master
[1628703709.426|52540|ice_transport.cpp :766 ] [ice:0x7fff99480f00] (local) ufrag=132de820, pwd=057ba91211155276119d9083
[1628703709.430|52686|sipcall.cpp :1642 ] [call:438314284593258] no media ICE transport, SDP not changed
[1628703709.432|52686|sipcall.cpp :686 ] [call:438314284593258] Set new invite session [0x7fff94133328]
[1628703709.436|52540|sipcall.cpp :2935 ] [call:438314284593258] Successfully created media ICE transport
```Mohamed ChibaniSébastien BlinMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/623AudioLayer - Deadlock between audio loop and main thread2021-09-13T17:02:45ZMohamed ChibaniAudioLayer - Deadlock between audio loop and main threadA deadlock may occur between the pulse audio thread and daemon main thread because of the lock inversion of callMutex_ (call class) and pa_threaded_mainloop private mutex. See backtrace in the comments.A deadlock may occur between the pulse audio thread and daemon main thread because of the lock inversion of callMutex_ (call class) and pa_threaded_mainloop private mutex. See backtrace in the comments.Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/631Plugin System: add support to preferences per account2022-05-11T19:00:14ZAline Gondim SantosPlugin System: add support to preferences per accountAline Gondim SantosAline Gondim Santoshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/659swarm: stay in "Already fetching for"2021-12-01T21:30:50ZSébastien Blinswarm: stay in "Already fetching for"Sometime, communication between 2 same devices is blocked.
In the logs, I see "Already fetching for"
For now, no scenario is identifiedSometime, communication between 2 same devices is blocked.
In the logs, I see "Already fetching for"
For now, no scenario is identifiedSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/209Maintain SIP connections - bug2020-06-19T17:22:19ZSébastien BlinMaintain SIP connections - bug- UPnP to test
- TURN one side to test
- [x] Connecting blocked => still a problem to detect the closing of a link and double notification for the incoming side
- [ ] Not related: presence not sync sometimes on DHT
- [ ] Timeout mes...- UPnP to test
- TURN one side to test
- [x] Connecting blocked => still a problem to detect the closing of a link and double notification for the incoming side
- [ ] Not related: presence not sync sometimes on DHT
- [ ] Timeout message should be linked to link down (pjproject)
- [ ] read notifications
- [x] UPnP to test again
- [x] dht operations slow / or a device is blocked.
- [x] 4g/closing co => Fail new calls.
- [x] Invalid call state transition (seems to be done if connection destroyed before recalling)
- [x] file no extension
- [x] gnome first account
- [x] Android keep alive doesn't seems to work?
- [x] *Send a message 2 minutes after that the android is in standby mode*
# L1
- [x] SIPS invite are generated when calling on a cached SIP connections => new invites/contacts generated
- [x] Block when disabling/enabling account
- [x] Some messages are duplicated
- [x] Android doesn't wake up
- [x] Pending connections sometimes not deleted
- [x] Blocked during peer ringing during a few secs
- [x] First frame missing
- [x] Talking timer on gnome doesn't work
- [x] Test multidevice (multiple calls)
- [x] Second call: Incoming call is showing
- [x] Disabling TURN broke connections
- [x] it.channel->underlyingICE() (jamiaccount:439) => nullptr sometimes. Should never be the case
- [x] Retry failed message doesn't work anymore
- [x] Segfault when leaving client
- [x] cf bt
- [x] Stop during "Connecting" and call back => segfault
- [x] Remove from onPeerOnline, only when sending first message (or first call)Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/210DBus service has wrong filename cx.ring.Ring.service for new XDG application ...2024-02-14T14:09:07ZDennis SchriddeDBus service has wrong filename cx.ring.Ring.service for new XDG application ID net.jami.JamiAfter Ring was renamed to Jami, the [XDG application ID] changed from `cx.ring.Ring` to `net.jami.Jami`. As a result, the DBus service file would also have to be renamed (in `bin/dbus/Makefile.am`).
Having the DBus service file mismatc...After Ring was renamed to Jami, the [XDG application ID] changed from `cx.ring.Ring` to `net.jami.Jami`. As a result, the DBus service file would also have to be renamed (in `bin/dbus/Makefile.am`).
Having the DBus service file mismatch the XDG application ID will prevent the Flatpak version of Jami from working: https://github.com/flathub/net.jami.Jami/issues/15
[XDG application ID]: https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#spec-component-filespechttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/560Jenkins: fix ut_media_negotiation2021-05-31T17:55:12ZSébastien BlinJenkins: fix ut_media_negotiationhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/343multi device & file transfer.2020-11-10T20:48:59ZSébastien Blinmulti device & file transfer.# Scenario
+ A got 2 devices
+ B sends a file to A
# Expected
A should receives the file on both devices
# Current
One device is cut when the other one received the whole file# Scenario
+ A got 2 devices
+ B sends a file to A
# Expected
A should receives the file on both devices
# Current
One device is cut when the other one received the whole fileIteration 22Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/211macOS : can only answer call once2020-03-18T22:49:21ZdmacOS : can only answer call onceCaller is Jami version `20200317.1.a0099c8~dfsg1-1` on `linuxmint 19.1`. Callee is Jami `20200318` on `MacOS 10.13.4`. On a local network.
I can answer call once and it works fine. Subsequent calls cannot be answered, as the accept butt...Caller is Jami version `20200317.1.a0099c8~dfsg1-1` on `linuxmint 19.1`. Callee is Jami `20200318` on `MacOS 10.13.4`. On a local network.
I can answer call once and it works fine. Subsequent calls cannot be answered, as the accept button is not present anymore : only the refuse button remains. Restarting Jami works.
---
You're doing an important job in participating internet's independence, in a world of proprietary messaging. Thank you.Sébastien BlinKateryna KostiukSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/212Video conferencing - known issues2020-06-19T17:26:28ZSébastien BlinVideo conferencing - known issues+ [x] Picture size 0x0
+ [x] Audio sometimes master receives sound, but peers not after adding someone
+ [x] Grey screen sometimes for peers (decrypt error resulting in a gray or black screen for non master)
+ [x] Lot of HOLD/Preview is...+ [x] Picture size 0x0
+ [x] Audio sometimes master receives sound, but peers not after adding someone
+ [x] Grey screen sometimes for peers (decrypt error resulting in a gray or black screen for non master)
+ [x] Lot of HOLD/Preview issues
+ [x] Add a participant is slow
+ [x] Crash when removing/adding someone to the confSébastien BlinPierre LespagnolSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/490Plugin: load status is not saved when installed2021-03-31T19:50:42ZAline Gondim SantosPlugin: load status is not saved when installedWhen a plugin is installed, jami is not saving it's load status.
Hence, in the next time we open jami, plugin may not be loaded.When a plugin is installed, jami is not saving it's load status.
Hence, in the next time we open jami, plugin may not be loaded.Aline Gondim SantosAline Gondim Santoshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/415investigate bump ffmpeg on apple devices or apply Lbrr frames patch2021-03-10T15:49:23ZSébastien Blininvestigate bump ffmpeg on apple devices or apply Lbrr frames patchcf https://review.jami.net/c/ring-daemon/+/16892cf https://review.jami.net/c/ring-daemon/+/16892Kateryna KostiukKateryna Kostiukhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/232Black screen with Mediacodec H2642020-09-09T13:11:11ZCyrille BéraudBlack screen with Mediacodec H264If the first packet sent by a stream using Mediacodec H264 (Acceleration Android) is not received, the stream is corrupted
[log](/uploads/1a28454268b3c80ecff5a74d0f6ab750/log)If the first packet sent by a stream using Mediacodec H264 (Acceleration Android) is not received, the stream is corrupted
[log](/uploads/1a28454268b3c80ecff5a74d0f6ab750/log)Itération 21Mohamed ChibaniPierre LespagnolMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/575Retrieving/Creating an account is impossible2021-07-23T15:33:23ZJerrynickiRetrieving/Creating an account is impossibleI've installed the latest nightly build of Jami on Debian Testing and whenever I try to create an account, import one from an archive or import it from a pin, the client gets stuck at "Retrieving your Jami account..." and the dring proce...I've installed the latest nightly build of Jami on Debian Testing and whenever I try to create an account, import one from an archive or import it from a pin, the client gets stuck at "Retrieving your Jami account..." and the dring process jumps to 8% cpu usage (one thread on my cpu).
I've also tried the official package from testing and compiled jami myself, all had the same issue.
This did not happen with the flatpak package.
Program output:
```** Message: 11:50:04.050: Jami GNOME client version: 1b618a6dac9fbf4891f8c842fae7a1a030a96c88
** Message: 11:50:04.050: git ref: unknown
No accounts to migrate
QDBusMarshaller: type `VectorString' attempts to redefine basic D-BUS type 'as' (QStringList) (Did you forget to call beginStructure() ?)
QDBusMarshaller: type `MapStringVectorString' produces invalid D-BUS signature `a{s}' (Did you forget to call beginStructure() ?)
QDBusMarshaller: type `QMap<QString,MapStringVectorString>' produces invalid D-BUS signature `a{s}' (Did you forget to call beginStructure() ?)
(jami-gnome:84290): Gtk-CRITICAL **: 11:50:04.319: gtk_scrolled_window_add: assertion 'child_widget == NULL' failed
(jami-gnome:84290): Gtk-WARNING **: 11:50:04.382: Theme parsing error: <data>:1:273: not a number
(jami-gnome:84290): Gtk-CRITICAL **: 11:50:12.802: gtk_file_chooser_select_filename: assertion 'filename != NULL' failed
(jami-gnome:84290): Gtk-CRITICAL **: 11:50:22.798: gtk_file_chooser_select_filename: assertion 'filename != NULL' failed
** (jami-gnome:84290): CRITICAL **: 11:50:23.804: gchar* avatar_manipulation_get_temporary(AvatarManipulation*): assertion 'IS_AVATAR_MANIPULATION(view)' failed
Syncing lrc accounts list with the daemon
"detected new account bf28824fa9abe8d2"
Can't open file: "/home/niklas/.local/share/jami/bf28824fa9abe8d2/profile.vcf"```https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/478Sip call refusal & hangup status code incorrect2021-03-29T12:47:09ZMing Rui ZhangSip call refusal & hangup status code incorrectMing Rui ZhangMing Rui Zhanghttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/213No SIP registration2020-11-20T00:22:23Zedonkey2001-jamiNo SIP registrationI'm running Fedora 31 x86_64, and I've installed Jami from the jami.net rpm repo, version 20200414.
I'm trying to use my SIP account with Jami. It is from an ISP also providing VoIP calls.
Since I don't know whether this is specific to ...I'm running Fedora 31 x86_64, and I've installed Jami from the jami.net rpm repo, version 20200414.
I'm trying to use my SIP account with Jami. It is from an ISP also providing VoIP calls.
Since I don't know whether this is specific to my provider, or a more general issue, I'm providing specific details about this setup.
My ISP setup is: UDP transport, no TLS nor SRTP, they provide an username/password and one should connect via their proxy. I'm not sure one can even connect to it from outside their network.
They have two proxies actually (IPv4 only):
srvrm.p.ims.tiscali.net (SRV record)
core1.p.ims.tiscali.net (A record)
213.205.21.8 (actual IP address)
srvmi.p.ims.tiscali.net (SRV record)
core2.p.ims.tiscali.net (A record)
94.32.130.112 (actual IP address)
These are the connection settings I'm using on a Grandstream ATA where I can place and receive calls:
Primary SIP Server: ims.tiscali.net
Outbound Proxy: 213.205.21.8
SIP User ID: $MYPHONENUMBER
Authenticate ID: $MYPHONENUMBER@ims.tiscali.net
Password: $MYPASSWORD
These are the connection settings I'm trying to use with Jami:
Name: $MYPHONENUMBER
SIP Server: I've tried using all of SRV name, A name and IP address.
Password: $MYPASSWORD
Proxy: I've tried using all of SRV name, A name and IP address.
What should happen: I should be able to register with my provider and be able to place and receive calls.
What happens actually: Jami is not sending a single SIP packet anywhere. At most it's performing DNS resolution via SRV or A records, receiving responses with the correct IP address.
I've started Jami with "jami-gnome -d" but I saw no relevant debug info. I'm running wireshark on the box running Jami, and by filtering for "udp.port==5060 || sip" I see no packets.Ming Rui ZhangMing Rui Zhanghttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/214dring hogs cpu when viewing Settings->Media page in jami-gnome2021-07-14T19:27:41ZArvid Brodindring hogs cpu when viewing Settings->Media page in jami-gnomeHow to reproduce:
* Start dring and jami-gnome.
* Select Settings->Media page.
* dring cpu usage goes to 100 % according to top (i.e. one core fully used), and stays there until I leave the Media settings page. This happens also with no...How to reproduce:
* Start dring and jami-gnome.
* Select Settings->Media page.
* dring cpu usage goes to 100 % according to top (i.e. one core fully used), and stays there until I leave the Media settings page. This happens also with no webcam/video device attached to the computer.
System info:
$ /usr/lib/ring/dring --version
Jami Daemon 9.1.0, by Savoir-faire Linux 2004-2019
https://jami.net/
[Video support enabled]
$ jami-gnome --version
74ef874ea412985a5cfb49e3e162d20b5707733b - unknown
(About page says "Free as in Freedom" built on 2020-04-14 20:24:50 UTC)
OS: Xubuntu 18.04 with kernel 5.5.17
This is NOT repeatable on Xubuntu 20.04 beta with Jami Daemon 7.4.0/jami-gnome "Live Free or Die" built on 2020-03-23 06:24:58.Pierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/215AudioInput segfault at the end of a call2020-12-24T21:24:27ZSébastien BlinAudioInput segfault at the end of a callFrom someone via IRC:
```
#0 0x0000000000000000 in ?? ()
#1 0x0000561a07b786c7 in jami::Observable<std::shared_ptr<DRing::MediaFrame> >::~Observable (this=0x7f8008036130, __in_chrg=<optimized out>) at ./daemon/src/observer.h:5...From someone via IRC:
```
#0 0x0000000000000000 in ?? ()
#1 0x0000561a07b786c7 in jami::Observable<std::shared_ptr<DRing::MediaFrame> >::~Observable (this=0x7f8008036130, __in_chrg=<optimized out>) at ./daemon/src/observer.h:50
#2 jami::AudioInput::~AudioInput (this=0x7f8008036130, __in_chrg=<optimized out>)
at audio_input.cpp:57
#3 0x0000561a07b7905a in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (
this=0x7f8008036120) at /usr/include/c++/6/bits/shared_ptr_base.h:150
#4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count (
this=0x561a0b097318, __in_chrg=<optimized out>)
at /usr/include/c++/6/bits/shared_ptr_base.h:662
#5 std::__shared_ptr<jami::AudioInput, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr (
this=0x561a0b097310, __in_chrg=<optimized out>)
at /usr/include/c++/6/bits/shared_ptr_base.h:928
#6 std::shared_ptr<jami::AudioInput>::~shared_ptr (this=0x561a0b097310,
__in_chrg=<optimized out>) at /usr/include/c++/6/bits/shared_ptr.h:93
#7 jami::AudioRtpSession::~AudioRtpSession (this=0x561a0b096f90,
__in_chrg=<optimized out>) at audio_rtp_session.cpp:58
#8 0x0000561a07b790b9 in jami::AudioRtpSession::~AudioRtpSession (this=0x561a0b096f90,
__in_chrg=<optimized out>) at audio_rtp_session.cpp:61
#9 0x0000561a07b4ee2e in std::default_delete<jami::AudioRtpSession>::operator() (
this=<optimized out>, __ptr=<optimized out>)
at /usr/include/c++/6/bits/unique_ptr.h:76
#10 std::unique_ptr<jami::AudioRtpSession, std::default_delete<jami::AudioRtpSession> >::~unique_ptr (this=0x561a0b098388, __in_chrg=<optimized out>)
at /usr/include/c++/6/bits/unique_ptr.h:239
#11 jami::SIPCall::~SIPCall (this=0x561a0b0981a0, __in_chrg=<optimized out>)
at sipcall.cpp:103
#12 0x0000561a07b4ada5 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (
this=0x561a0b098190) at /usr/include/c++/6/bits/shared_ptr_base.h:150
#13 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count (
this=<synthetic pointer>, __in_chrg=<optimized out>)
at /usr/include/c++/6/bits/shared_ptr_base.h:662
#14 std::__shared_ptr<jami::SIPCall, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr (
this=<synthetic pointer>, __in_chrg=<optimized out>)
at /usr/include/c++/6/bits/shared_ptr_base.h:928
#15 std::shared_ptr<jami::SIPCall>::~shared_ptr (this=<synthetic pointer>,
__in_chrg=<optimized out>) at /usr/include/c++/6/bits/shared_ptr.h:93
#16 jami::SIPCall::<lambda()>::operator() (__closure=<optimized out>) at sipcall.cpp:396
#17 std::_Function_handler<void(), jami::SIPCall::hangup(int)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/6/functional:1731
#18 0x0000561a07da1f5e in std::function<void ()>::operator()() const (
this=0x7f80077fc790) at /usr/include/c++/6/functional:2127
#19 dht::ThreadPool::<lambda()>::operator() (__closure=0x7f7ff0000e08)
at thread_pool.cpp:97
#20 std::_Bind_simple<dht::ThreadPool::run(std::function<void()>&&)::<lambda()>()>::_M_invoke<> (this=0x7f7ff0000e08) at /usr/include/c++/6/functional:1391
#21 std::_Bind_simple<dht::ThreadPool::run(std::function<void()>&&)::<lambda()>()>::operator() (this=0x7f7ff0000e08) at /usr/include/c++/6/functional:1380
#22 std::thread::_State_impl<std::_Bind_simple<dht::ThreadPool::run(std::function<void()>&&)::<lambda()>()> >::_M_run(void) (this=0x7f7ff0000e00) at /usr/include/c++/6/thread:197
#23 0x00007f804a17cb2f in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#24 0x00007f804ab65fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#25 0x00007f8049e5c4cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
```https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/216No audio input in Android 72020-12-24T21:25:23ZNo audio input in Android 7Hi, I posted this issue in the `jami-android` repo, but I think it is related to the daemon. The related issue is: https://git.jami.net/savoirfairelinux/ring-client-android/issues/725
I attach the Android log file here too.[logjami.txt]...Hi, I posted this issue in the `jami-android` repo, but I think it is related to the daemon. The related issue is: https://git.jami.net/savoirfairelinux/ring-client-android/issues/725
I attach the Android log file here too.[logjami.txt](/uploads/7720a53635d1cb6d0fa34ae1e30036dd/logjami.txt)Adrien BéraudAdrien Béraudhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/221Video rotation not considered in recorded video2020-06-20T17:34:20ZAdrien BéraudVideo rotation not considered in recorded videoIteration 18Pierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/451Plugins: code deduplication2021-07-09T19:25:49ZAline Gondim SantosPlugins: code deduplicationCallServicesManager and ChatServicesManager have lots of similar code that can be deduplicated
by using a superclass.CallServicesManager and ChatServicesManager have lots of similar code that can be deduplicated
by using a superclass.Aline Gondim SantosAline Gondim Santoshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/590pjnath: Leak of UDP socket used by TURN relay2021-07-30T20:03:41ZOlivier Dionpjnath: Leak of UDP socket used by TURN relay# Problem
When `TURN.enable` is set to `true`, then upon creation of a ICE transport using `pj_ice_strans_create()`, multiple UDP sockets will be opened by PJSIP. However, 4 of these sockets are never closed by `pj_ice_strans_destroy()...# Problem
When `TURN.enable` is set to `true`, then upon creation of a ICE transport using `pj_ice_strans_create()`, multiple UDP sockets will be opened by PJSIP. However, 4 of these sockets are never closed by `pj_ice_strans_destroy()`. These sockets are all allocated from the same place.
Here:
```
/ring-project/daemon/test/agent/agent(pj_sock_socket+0x76)[0x55555b78e260]
/ring-project/daemon/test/agent/agent(turn_on_state)[0x55555b7740f9]
/ring-project/daemon/test/agent/agent(set_state)[0x55555b76d6cb]
/ring-project/daemon/test/agent/agent(pj_turn_session_set_server+0x51d)[0x55555b76e14b]
/ring-project/daemon/test/agent/agent(pj_turn_sock_alloc+0x1a3)[0x55555b772b95]
/ring-project/daemon/test/agent/agent(add_update_turn)[0x55555b757d00]
/ring-project/daemon/test/agent/agent(create_comp)[0x55555b7597f5]
/ring-project/daemon/test/agent/agent(pj_ice_strans_create+0x405)[0x55555b759e24]
```
**NOTE!** When `TURN.enable` is set to `false` there's **no leak**.
# How to reproduce
1. Run one passive agent.
2. Run one active agent with `scenario/call:periodic` to the passive agent.
3. Check leak with `watch -n 0.1 'lsof -p PID | grep UDP | wc -l'` where PID is the PID of the active agent.
# How to trace UDP leak
1. Compile [trace-udp.c](/uploads/5ae2314de122c61090f0d37c14b32060/trace-udp.c) with `gcc -O0 -ggdb3 -Wall -shared -fPIC trace-udp.c -o libtrace-udp.so -ldl`
2. Compile the agents by adding `-rdynamic` to `AM_CXXFLAGS` in `Makefile.am`.
3. Run the active agent with `LD_PRELOAD=./libtrace-udp.so`.
4. Check UDP allocations under `udp-trace.txt` and match with leaks found.Olivier DionOlivier Dionhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/576Conference: bad videomuted and audiomuted initial states2021-07-23T17:27:37ZAline Gondim SantosConference: bad videomuted and audiomuted initial statesWhen creating a conference from a audio and/or video muted call, the resulting audioMuted and videoMuted flags aren't set correctly.When creating a conference from a audio and/or video muted call, the resulting audioMuted and videoMuted flags aren't set correctly.Aline Gondim SantosMohamed ChibaniAline Gondim Santoshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/321Swarm: relink share location2021-01-18T17:17:30ZSébastien BlinSwarm: relink share locationSwarm-chatSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/217Issues compiling ring-daemon - opendht/http.h not found2020-06-19T18:05:57ZconstatinusIssues compiling ring-daemon - opendht/http.h not foundUsing the contrib library opendht, i get when doing ./autogen.sh, ./configure and make -j4 in the main dir:
```
server_account_manager.cpp:23:10: fatal error: opendht/http.h: No such file or directory
```
I know that i should not compile...Using the contrib library opendht, i get when doing ./autogen.sh, ./configure and make -j4 in the main dir:
```
server_account_manager.cpp:23:10: fatal error: opendht/http.h: No such file or directory
```
I know that i should not compile my own opendht because of some version mismatches i guess, but nevertheless tried compiling it i found that the http.h header too, doesnt get in the final installation if i build and install it with autotools, and not with cmake, in which case it is there. Trying to extract the headers in the downloaded tarballs and doing so for every recursive request of almost each dependency still leaves me with a final link problem with some undefined functions about opendht, but i forgot about that specifically, as that should not be what i should be doing to compile, there must be something wrong that is going on here?https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/218Unable to build on Manjaro/Arch (linking OpenDHT)2021-10-18T18:43:06ZMicrotus62Unable to build on Manjaro/Arch (linking OpenDHT)I'm trying to build Jami-daemon on my Manjaro but having trouble with linking OpenDHT. I've tried dynamic/static linking with g++ as well with clang++ compilers. Still the same problem:
`Linking target src/libjami.so.9.1.0
FAILED: src/...I'm trying to build Jami-daemon on my Manjaro but having trouble with linking OpenDHT. I've tried dynamic/static linking with g++ as well with clang++ compilers. Still the same problem:
`Linking target src/libjami.so.9.1.0
FAILED: src/libjami.so.9.1.0
c++ -shared -o src/libjami.so.9.1.0 'src/25a6634@@jami@sha/libopendht.so' 'src/25a6634@@jami@sha/client_callmanager.cpp.o' 'src/25a6634@@jami@sha/client_configurationmanager.cpp.o' 'src/25a6634@@jami@sha/client_datatransfer.cpp.o' 'src/25a6634@@jami@sha/client_presencemanager.cpp.o' 'src/25a6634@@jami@sha/client_ring_signal.cpp.o' 'src/25a6634@@jami@sha/client_videomanager.cpp.o' 'src/25a6634@@jami@sha/config_yamlparser.cpp.o' 'src/25a6634@@jami@sha/hooks_urlhook.cpp.o' 'src/25a6634@@jami@sha/im_instant_messaging.cpp.o' 'src/25a6634@@jami@sha/im_message_engine.cpp.o' 'src/25a6634@@jami@sha/jamidht_eth_libdevcore_Common.cpp.o' 'src/25a6634@@jami@sha/jamidht_eth_libdevcore_CommonData.cpp.o' 'src/25a6634@@jami@sha/jamidht_eth_libdevcore_FixedHash.cpp.o' 'src/25a6634@@jami@sha/jamidht_eth_libdevcore_SHA3.cpp.o' 'src/25a6634@@jami@sha/jamidht_eth_libdevcrypto_Common.cpp.o' 'src/25a6634@@jami@sha/jamidht_accountarchive.cpp.o' 'src/25a6634@@jami@sha/jamidht_account_manager.cpp.o' 'src/25a6634@@jami@sha/jamidht_archive_account_manager.cpp.o' 'src/25a6634@@jami@sha/jamidht_channeled_transport.cpp.o' 'src/25a6634@@jami@sha/jamidht_connectionmanager.cpp.o' 'src/25a6634@@jami@sha/jamidht_contact_list.cpp.o' 'src/25a6634@@jami@sha/jamidht_jamiaccount.cpp.o' 'src/25a6634@@jami@sha/jamidht_multiplexed_socket.cpp.o' 'src/25a6634@@jami@sha/jamidht_namedirectory.cpp.o' 'src/25a6634@@jami@sha/jamidht_p2p.cpp.o' 'src/25a6634@@jami@sha/jamidht_server_account_manager.cpp.o' 'src/25a6634@@jami@sha/jamidht_sips_transport_ice.cpp.o' 'src/25a6634@@jami@sha/media_audio_sound_audiofile.cpp.o' 'src/25a6634@@jami@sha/media_audio_sound_dtmf.cpp.o' 'src/25a6634@@jami@sha/media_audio_sound_dtmfgenerator.cpp.o' 'src/25a6634@@jami@sha/media_audio_sound_tone.cpp.o' 'src/25a6634@@jami@sha/media_audio_sound_tonelist.cpp.o' 'src/25a6634@@jami@sha/media_audio_audiobuffer.cpp.o' 'src/25a6634@@jami@sha/media_audio_audio_frame_resizer.cpp.o' 'src/25a6634@@jami@sha/media_audio_audio_input.cpp.o' 'src/25a6634@@jami@sha/media_audio_audiolayer.cpp.o' 'src/25a6634@@jami@sha/media_audio_audioloop.cpp.o' 'src/25a6634@@jami@sha/media_audio_audio_receive_thread.cpp.o' 'src/25a6634@@jami@sha/media_audio_audio_rtp_session.cpp.o' 'src/25a6634@@jami@sha/media_audio_audio_sender.cpp.o' 'src/25a6634@@jami@sha/media_audio_dcblocker.cpp.o' 'src/25a6634@@jami@sha/media_audio_dsp.cpp.o' 'src/25a6634@@jami@sha/media_audio_resampler.cpp.o' 'src/25a6634@@jami@sha/media_audio_ringbuffer.cpp.o' 'src/25a6634@@jami@sha/media_audio_ringbufferpool.cpp.o' 'src/25a6634@@jami@sha/media_audio_tonecontrol.cpp.o' 'src/25a6634@@jami@sha/media_congestion_control.cpp.o' 'src/25a6634@@jami@sha/media_libav_utils.cpp.o' 'src/25a6634@@jami@sha/media_localrecorder.cpp.o' 'src/25a6634@@jami@sha/media_localrecordermanager.cpp.o' 'src/25a6634@@jami@sha/media_media_buffer.cpp.o' 'src/25a6634@@jami@sha/media_media_codec.cpp.o' 'src/25a6634@@jami@sha/media_media_decoder.cpp.o' 'src/25a6634@@jami@sha/media_media_encoder.cpp.o' 'src/25a6634@@jami@sha/media_media_filter.cpp.o' 'src/25a6634@@jami@sha/media_media_io_handle.cpp.o' 'src/25a6634@@jami@sha/media_media_player.cpp.o' 'src/25a6634@@jami@sha/media_media_recorder.cpp.o' 'src/25a6634@@jami@sha/media_recordable.cpp.o' 'src/25a6634@@jami@sha/media_socket_pair.cpp.o' 'src/25a6634@@jami@sha/media_srtp.c.o' 'src/25a6634@@jami@sha/media_system_codec_container.cpp.o' 'src/25a6634@@jami@sha/security_certstore.cpp.o' 'src/25a6634@@jami@sha/security_diffie-hellman.cpp.o' 'src/25a6634@@jami@sha/security_memory.cpp.o' 'src/25a6634@@jami@sha/security_tls_session.cpp.o' 'src/25a6634@@jami@sha/security_tlsvalidator.cpp.o' 'src/25a6634@@jami@sha/sip_pres_sub_client.cpp.o' 'src/25a6634@@jami@sha/sip_pres_sub_server.cpp.o' 'src/25a6634@@jami@sha/sip_sdes_negotiator.cpp.o' 'src/25a6634@@jami@sha/sip_sdp.cpp.o' 'src/25a6634@@jami@sha/sip_sipaccountbase.cpp.o' 'src/25a6634@@jami@sha/sip_sipaccount.cpp.o' 'src/25a6634@@jami@sha/sip_sipcall.cpp.o' 'src/25a6634@@jami@sha/sip_sippresence.cpp.o' 'src/25a6634@@jami@sha/sip_siptransport.cpp.o' 'src/25a6634@@jami@sha/sip_sip_utils.cpp.o' 'src/25a6634@@jami@sha/sip_sipvoiplink.cpp.o' 'src/25a6634@@jami@sha/upnp_protocol_igd.cpp.o' 'src/25a6634@@jami@sha/upnp_protocol_mapping.cpp.o' 'src/25a6634@@jami@sha/upnp_upnp_context.cpp.o' 'src/25a6634@@jami@sha/upnp_upnp_control.cpp.o' 'src/25a6634@@jami@sha/account.cpp.o' 'src/25a6634@@jami@sha/account_factory.cpp.o' 'src/25a6634@@jami@sha/archiver.cpp.o' 'src/25a6634@@jami@sha/base64.cpp.o' 'src/25a6634@@jami@sha/buildinfo.cpp.o' 'src/25a6634@@jami@sha/call.cpp.o' 'src/25a6634@@jami@sha/call_factory.cpp.o' 'src/25a6634@@jami@sha/conference.cpp.o' 'src/25a6634@@jami@sha/data_transfer.cpp.o' 'src/25a6634@@jami@sha/fileutils.cpp.o' 'src/25a6634@@jami@sha/ftp_server.cpp.o' 'src/25a6634@@jami@sha/ice_transport.cpp.o' 'src/25a6634@@jami@sha/ip_utils.cpp.o' 'src/25a6634@@jami@sha/logger.cpp.o' 'src/25a6634@@jami@sha/manager.cpp.o' 'src/25a6634@@jami@sha/peer_connection.cpp.o' 'src/25a6634@@jami@sha/preferences.cpp.o' 'src/25a6634@@jami@sha/ring_api.cpp.o' 'src/25a6634@@jami@sha/scheduled_executor.cpp.o' 'src/25a6634@@jami@sha/smartools.cpp.o' 'src/25a6634@@jami@sha/string_utils.cpp.o' 'src/25a6634@@jami@sha/threadloop.cpp.o' 'src/25a6634@@jami@sha/turn_transport.cpp.o' 'src/25a6634@@jami@sha/utf8_utils.cpp.o' 'src/25a6634@@jami@sha/media_audio_alsa_alsalayer.cpp.o' 'src/25a6634@@jami@sha/media_audio_pulseaudio_audiostream.cpp.o' 'src/25a6634@@jami@sha/media_audio_pulseaudio_pulselayer.cpp.o' 'src/25a6634@@jami@sha/media_audio_jack_jacklayer.cpp.o' 'src/25a6634@@jami@sha/media_audio_portaudio_portaudiolayer.cpp.o' 'src/25a6634@@jami@sha/upnp_protocol_pupnp_pupnp.cpp.o' 'src/25a6634@@jami@sha/upnp_protocol_pupnp_upnp_igd.cpp.o' 'src/25a6634@@jami@sha/upnp_protocol_natpmp_nat_pmp.cpp.o' 'src/25a6634@@jami@sha/upnp_protocol_natpmp_pmp_igd.cpp.o' 'src/25a6634@@jami@sha/media_video_filter_transpose.cpp.o' 'src/25a6634@@jami@sha/media_video_sinkclient.cpp.o' 'src/25a6634@@jami@sha/media_video_video_base.cpp.o' 'src/25a6634@@jami@sha/media_video_video_device_monitor.cpp.o' 'src/25a6634@@jami@sha/media_video_video_input.cpp.o' 'src/25a6634@@jami@sha/media_video_video_mixer.cpp.o' 'src/25a6634@@jami@sha/media_video_video_receive_thread.cpp.o' 'src/25a6634@@jami@sha/media_video_video_rtp_session.cpp.o' 'src/25a6634@@jami@sha/media_video_video_scaler.cpp.o' 'src/25a6634@@jami@sha/media_video_video_sender.cpp.o' 'src/25a6634@@jami@sha/media_video_accel.cpp.o' 'src/25a6634@@jami@sha/media_video_v4l2_video_device_impl.cpp.o' 'src/25a6634@@jami@sha/media_video_v4l2_video_device_monitor_impl.cpp.o' -Wl,--as-needed -Wl,--no-undefined -shared -fPIC -Wl,--start-group -Wl,-soname,libjami.so.9 -pthread src/25a6634@@jami@sha/libopendht.so /usr/lib/libgnutls.so /home/martin/Programy/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpjsua2-x86_64-pc-linux-gnu.a /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../lib/libstdc++.so /home/martin/Programy/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpjsua-x86_64-pc-linux-gnu.a /home/martin/Programy/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpjsip-ua-x86_64-pc-linux-gnu.a /home/martin/Programy/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpjsip-simple-x86_64-pc-linux-gnu.a /home/martin/Programy/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpjsip-x86_64-pc-linux-gnu.a /home/martin/Programy/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpjmedia-codec-x86_64-pc-linux-gnu.a /home/martin/Programy/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpjmedia-videodev-x86_64-pc-linux-gnu.a /home/martin/Programy/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpjmedia-audiodev-x86_64-pc-linux-gnu.a /home/martin/Programy/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpjmedia-x86_64-pc-linux-gnu.a /home/martin/Programy/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpjnath-x86_64-pc-linux-gnu.a /home/martin/Programy/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpjlib-util-x86_64-pc-linux-gnu.a /home/martin/Programy/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libsrtp-x86_64-pc-linux-gnu.a /home/martin/Programy/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libyuv-x86_64-pc-linux-gnu.a /home/martin/Programy/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libpj-x86_64-pc-linux-gnu.a /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../lib/libopus.so /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../lib/libvpx.so /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../lib/libuuid.so -lm -lrt -lpthread /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../lib/libgnutls.so /usr/lib/libsecp256k1.so /usr/lib/libavcodec.so /usr/lib/libavfilter.so /usr/lib/libavdevice.so /usr/lib/libavformat.so /usr/lib/libswscale.so /usr/lib/libswresample.so /usr/lib/libavutil.so /usr/lib/libspeex.so /usr/lib/libspeexdsp.so /usr/lib/libyaml-cpp.so /usr/lib/libjsoncpp.so /usr/lib/libz.so /usr/lib/libasound.so /usr/lib/libpulse.so /usr/lib/libjack.so /usr/lib/libportaudio.so /home/martin/Programy/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libupnp.a /home/martin/Programy/ring-daemon/contrib/x86_64-pc-linux-gnu/lib/libixml.a -lnatpmp /usr/lib/libssl.so /usr/lib/libcrypto.so /usr/lib/libudev.so -Wl,--end-group
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_jamiaccount.cpp.o: in function `jami::JamiAccount::loadCachedUrl(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::chrono::duration<long, std::ratio<1l, 1l> > const&, std::function<void (dht::http::Response const&)>)::{lambda()#1}::operator()() const [clone .cold]':
/usr/include/c++/9.3.0/ext/new_allocator.h:147: undefined reference to `dht::http::Request::Request(asio::io_context&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<void (dht::http::Response const&)>, std::shared_ptr<dht::Logger>)'
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_jamiaccount.cpp.o: in function `jami::JamiAccount::loadCachedUrl(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::chrono::duration<long, std::ratio<1l, 1l> > const&, std::function<void (dht::http::Response const&)>)::{lambda()#1}::operator()() const [clone .cold]':
/home/martin/Programy/ring-daemon/build/../src/jamidht/jamiaccount.cpp:2465: undefined reference to `dht::http::Request::send()'
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_jamiaccount.cpp.o: in function `void __gnu_cxx::new_allocator<dht::http::Request>::destroy<dht::http::Request>(dht::http::Request*)':
/usr/include/c++/9.3.0/ext/new_allocator.h:153: undefined reference to `dht::http::Request::~Request()'
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_namedirectory.cpp.o: in function `jami::NameDirectory::setHeaderFields(dht::http::Request&)':
/home/martin/Programy/ring-daemon/build/../src/jamidht/namedirectory.cpp:129: undefined reference to `dht::http::Request::set_header_field(restinio::http_field_t, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/namedirectory.cpp:130: undefined reference to `dht::http::Request::set_header_field(restinio::http_field_t, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/namedirectory.cpp:131: undefined reference to `dht::http::Request::set_header_field(restinio::http_field_t, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_namedirectory.cpp.o: in function `void __gnu_cxx::new_allocator<dht::http::Resolver>::construct<dht::http::Resolver, asio::io_context&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<dht::Logger>&>(dht::http::Resolver*, asio::io_context&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<dht::Logger>&)':
/usr/include/c++/9.3.0/ext/new_allocator.h:147: undefined reference to `dht::http::Resolver::Resolver(asio::io_context&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<dht::Logger>)'
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_namedirectory.cpp.o: in function `void __gnu_cxx::new_allocator<dht::http::Request>::construct<dht::http::Request, asio::io_context&, std::shared_ptr<dht::http::Resolver>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(dht::http::Request*, asio::io_context&, std::shared_ptr<dht::http::Resolver>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)':
/usr/include/c++/9.3.0/ext/new_allocator.h:147: undefined reference to `dht::http::Request::Request(asio::io_context&, std::shared_ptr<dht::http::Resolver>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned short)'
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_namedirectory.cpp.o: in function `jami::NameDirectory::lookupAddress(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, jami::NameDirectory::Response)>)':
/home/martin/Programy/ring-daemon/build/../src/jamidht/namedirectory.cpp:145: undefined reference to `dht::http::Request::set_method(restinio::http_method_id_t)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/namedirectory.cpp:147: undefined reference to `dht::http::Request::add_on_done_callback(std::function<void (dht::http::Response const&)>)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/namedirectory.cpp:185: undefined reference to `dht::http::Request::send()'
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_namedirectory.cpp.o: in function `void __gnu_cxx::new_allocator<dht::http::Request>::construct<dht::http::Request, asio::io_context&, std::shared_ptr<dht::http::Resolver>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(dht::http::Request*, asio::io_context&, std::shared_ptr<dht::http::Resolver>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)':
/usr/include/c++/9.3.0/ext/new_allocator.h:147: undefined reference to `dht::http::Request::Request(asio::io_context&, std::shared_ptr<dht::http::Resolver>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned short)'
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_namedirectory.cpp.o: in function `jami::NameDirectory::lookupName(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, jami::NameDirectory::Response)>)':
/home/martin/Programy/ring-daemon/build/../src/jamidht/namedirectory.cpp:219: undefined reference to `dht::http::Request::set_method(restinio::http_method_id_t)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/namedirectory.cpp:221: undefined reference to `dht::http::Request::add_on_done_callback(std::function<void (dht::http::Response const&)>)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/namedirectory.cpp:279: undefined reference to `dht::http::Request::send()'
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_namedirectory.cpp.o: in function `void __gnu_cxx::new_allocator<dht::http::Request>::construct<dht::http::Request, asio::io_context&, std::shared_ptr<dht::http::Resolver>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(dht::http::Request*, asio::io_context&, std::shared_ptr<dht::http::Resolver>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)':
/usr/include/c++/9.3.0/ext/new_allocator.h:147: undefined reference to `dht::http::Request::Request(asio::io_context&, std::shared_ptr<dht::http::Resolver>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned short)'
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_namedirectory.cpp.o: in function `jami::NameDirectory::registerName(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<void (jami::NameDirectory::RegistrationResponse)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/home/martin/Programy/ring-daemon/build/../src/jamidht/namedirectory.cpp:325: undefined reference to `dht::http::Request::set_method(restinio::http_method_id_t)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/namedirectory.cpp:327: undefined reference to `dht::http::Request::set_body(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/namedirectory.cpp:331: undefined reference to `dht::http::Request::add_on_done_callback(std::function<void (dht::http::Response const&)>)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/namedirectory.cpp:372: undefined reference to `dht::http::Request::send()'
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_namedirectory.cpp.o: in function `void __gnu_cxx::new_allocator<dht::http::Resolver>::destroy<dht::http::Resolver>(dht::http::Resolver*)':
/usr/include/c++/9.3.0/ext/new_allocator.h:153: undefined reference to `dht::http::Resolver::~Resolver()'
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_server_account_manager.cpp.o: in function `jami::ServerAccountManager::setHeaderFields(dht::http::Request&)':
/home/martin/Programy/ring-daemon/build/../src/jamidht/server_account_manager.cpp:56: undefined reference to `dht::http::Request::set_header_field(restinio::http_field_t, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/server_account_manager.cpp:57: undefined reference to `dht::http::Request::set_header_field(restinio::http_field_t, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/server_account_manager.cpp:58: undefined reference to `dht::http::Request::set_header_field(restinio::http_field_t, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_server_account_manager.cpp.o: in function `jami::ServerAccountManager::initAuthentication(std::future<std::unique_ptr<dht::crypto::CertificateRequest, std::default_delete<dht::crypto::CertificateRequest> > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::unique_ptr<jami::AccountManager::AccountCredentials, std::default_delete<jami::AccountManager::AccountCredentials> >, std::function<void (jami::AccountInfo const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, std::vector<unsigned char, std::allocator<unsigned char> >&&)>, std::function<void (jami::AccountManager::AuthError, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>, jami::ContactList::OnChangeCallback)::{lambda()#1}::operator()() const::{lambda(jami::AccountManager&)#1}::operator()({lambda()#1}) const':
/home/martin/Programy/ring-daemon/build/../src/jamidht/server_account_manager.cpp:100: undefined reference to `dht::http::Request::set_body(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/server_account_manager.cpp:103: undefined reference to `dht::http::Request::add_on_done_callback(std::function<void (dht::http::Response const&)>)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/server_account_manager.cpp:203: undefined reference to `dht::http::Request::send()'
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_server_account_manager.cpp.o: in function `void __gnu_cxx::new_allocator<dht::http::Request>::construct<dht::http::Request, asio::io_context&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<dht::Logger>&>(dht::http::Request*, asio::io_context&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<dht::Logger>&)':
/usr/include/c++/9.3.0/ext/new_allocator.h:147: undefined reference to `dht::http::Request::Request(asio::io_context&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<dht::Logger>)'
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_server_account_manager.cpp.o: in function `jami::ServerAccountManager::initAuthentication(std::future<std::unique_ptr<dht::crypto::CertificateRequest, std::default_delete<dht::crypto::CertificateRequest> > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::unique_ptr<jami::AccountManager::AccountCredentials, std::default_delete<jami::AccountManager::AccountCredentials> >, std::function<void (jami::AccountInfo const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, std::vector<unsigned char, std::allocator<unsigned char> >&&)>, std::function<void (jami::AccountManager::AuthError, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>, jami::ContactList::OnChangeCallback)':
/home/martin/Programy/ring-daemon/build/../src/jamidht/server_account_manager.cpp:86: undefined reference to `dht::http::Request::set_method(restinio::http_method_id_t)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/server_account_manager.cpp:87: undefined reference to `dht::http::Request::set_auth(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_server_account_manager.cpp.o: in function `void __gnu_cxx::new_allocator<dht::http::Request>::construct<dht::http::Request, asio::io_context&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<dht::Logger>&>(dht::http::Request*, asio::io_context&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<dht::Logger>&)':
/usr/include/c++/9.3.0/ext/new_allocator.h:147: undefined reference to `dht::http::Request::Request(asio::io_context&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<dht::Logger>)'
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_server_account_manager.cpp.o: in function `jami::ServerAccountManager::syncDevices()':
/home/martin/Programy/ring-daemon/build/../src/jamidht/server_account_manager.cpp:217: undefined reference to `dht::http::Request::set_method(restinio::http_method_id_t)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/server_account_manager.cpp:218: undefined reference to `dht::http::Request::set_auth(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/server_account_manager.cpp:220: undefined reference to `dht::http::Request::add_on_done_callback(std::function<void (dht::http::Response const&)>)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/server_account_manager.cpp:254: undefined reference to `dht::http::Request::send()'
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_server_account_manager.cpp.o: in function `void __gnu_cxx::new_allocator<dht::http::Request>::construct<dht::http::Request, asio::io_context&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<dht::Logger>&>(dht::http::Request*, asio::io_context&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<dht::Logger>&)':
/usr/include/c++/9.3.0/ext/new_allocator.h:147: undefined reference to `dht::http::Request::Request(asio::io_context&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<dht::Logger>)'
/usr/bin/ld: src/25a6634@@jami@sha/jamidht_server_account_manager.cpp.o: in function `jami::ServerAccountManager::revokeDevice(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<void (jami::AccountManager::RevokeDeviceResult)>)':
/home/martin/Programy/ring-daemon/build/../src/jamidht/server_account_manager.cpp:270: undefined reference to `dht::http::Request::set_method(restinio::http_method_id_t)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/server_account_manager.cpp:271: undefined reference to `dht::http::Request::set_auth(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/server_account_manager.cpp:273: undefined reference to `dht::http::Request::add_on_done_callback(std::function<void (dht::http::Response const&)>)'
/usr/bin/ld: /home/martin/Programy/ring-daemon/build/../src/jamidht/server_account_manager.cpp:305: undefined reference to `dht::http::Request::send()'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.`
I have installed OpenDHT version 2.1.0 - compiled manually from repo.
Tried with meson/ninja build as well as with with previous cmake/make. I've also tried ring-project make-ring.py script. Still the same issue. Any ideas?https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/259File transfer and multi device, "already accepted" + cancelled2020-07-17T14:25:42ZSébastien BlinFile transfer and multi device, "already accepted" + cancelled# Reproduce step
+ Account B got 2 devices connected to account A
+ A sends a file
+ B receives the file request on both devices, but A cancels the transfer# Reproduce step
+ Account B got 2 devices connected to account A
+ A sends a file
+ B receives the file request on both devices, but A cancels the transferIteration 19Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/256Stuck in Connecting: Some negotiations are blocked2020-07-16T18:48:37ZSébastien BlinStuck in Connecting: Some negotiations are blockedRelated to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227
# Observation
The ice become complete too soon with no valid pairs:
@@@ Updating States
@@@ on_ice_complete
[1593797289.007|37053|manager.cpp :243 ] 13:28...Related to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227
# Observation
The ice become complete too soon with no valid pairs:
@@@ Updating States
@@@ on_ice_complete
[1593797289.007|37053|manager.cpp :243 ] 13:28:09.007 sip:1018943881119817 ...ICE process complete, status=Success
[1593797289.007|37053|manager.cpp :243 ] 13:28:09.007 sip:1018943881119817 ...Valid list
(called a second time after that when negotiation is done
# Reproduce steps
still unknownIteration 19Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/245Logic error: A device that answer 2 minutes after a call trigger the bad timeout2020-06-25T20:33:15ZSébastien BlinLogic error: A device that answer 2 minutes after a call trigger the bad timeoutSince we removed the eventloop, this code doesn't make any sense:
Related to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227
```
bool
JamiAccount::handlePendingCall(PendingCall& pc, bool incoming)
{
auto call = pc.cal...Since we removed the eventloop, this code doesn't make any sense:
Related to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227
```
bool
JamiAccount::handlePendingCall(PendingCall& pc, bool incoming)
{
auto call = pc.call.lock();
// Cleanup pending call if call is over (cancelled by user or any other reason)
if (not call || call->getState() == Call::CallState::OVER)
return true;
if ((std::chrono::steady_clock::now() - pc.start) >= ICE_NEGOTIATION_TIMEOUT) {
JAMI_WARN("[call:%s] Timeout on ICE negotiation", call->getCallId().c_str());
call->onFailure();
return true;
}
```
Because handlePendingCall() is only done on negotiation success.Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/258No way to use a custom turn server port2020-07-16T18:48:33ZBrando TovarNo way to use a custom turn server port**Evironment details:**
* OS: Ubuntu 20.04
* Jami version: Jami from jami.net for ubuntu 20.04
**Steps to reproduce**
* Set your own turn server using these instructions: https://git.jami.net/savoirfairelinux/ring-project/wikis/technica...**Evironment details:**
* OS: Ubuntu 20.04
* Jami version: Jami from jami.net for ubuntu 20.04
**Steps to reproduce**
* Set your own turn server using these instructions: https://git.jami.net/savoirfairelinux/ring-project/wikis/technical/3.6-Setup-your-own-TURN-server
* Update turn configuration on Jami advance settings with: IPOfTurnServer:customPort
* Then trying to make a call using turn only will not work and the logs will show this line: `[ice] added turn server 'IPOfTurnServer', port 3478`
The solution is to use 3478 as the listening port on the turnserver.conf than everything will work as intended.Iteration 19Brando TovarBrando Tovarhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/220Explore WebRTC support2023-11-20T14:19:22ZAdrien BéraudExplore WebRTC supportBacklogLarbi GharibLarbi Gharibhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/464Implement WebRTC echo cancellation2021-03-16T19:54:01ZAndreas TraczykImplement WebRTC echo cancellationAndreas TraczykAndreas Traczykhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/229EPIC - Improve video quality for weak connections2020-06-29T14:11:47ZGuillaume HellerEPIC - Improve video quality for weak connectionsThe video quality should be good (ideally without any visible glitch) even on weak ADSL connexions (800 kbps upload or less).
We first need to analyze and characterize the quality issues experienced by users on these types of connections...The video quality should be good (ideally without any visible glitch) even on weak ADSL connexions (800 kbps upload or less).
We first need to analyze and characterize the quality issues experienced by users on these types of connections. Then suggest and implement solutions adapted to the context.Iteration 18Pierre LespagnolMohamed ChibaniPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/230Contacts are not displayed after account creation from the DHT2020-06-18T19:54:46ZCyrille BéraudContacts are not displayed after account creation from the DHTIteration 18Sébastien BlinAdrien BéraudKateryna KostiukMing Rui ZhangSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/224Random call drops2020-07-10T14:12:21ZAdrien BéraudRandom call dropsIn many cases the call drops (ends) unexpectedly without obvious reasons.In many cases the call drops (ends) unexpectedly without obvious reasons.Iteration 18Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/223Audio lost after 5min2020-08-14T17:10:41ZGuillaume HellerAudio lost after 5minIn some cases (not identified yet), the audio is lost exactly after 5min.
It can also happens that the video freezes, but the audio remains.In some cases (not identified yet), the audio is lost exactly after 5min.
It can also happens that the video freezes, but the audio remains.Iteration 18Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/234Random crash during call2020-07-10T14:12:12ZAdrien BéraudRandom crash during call[crash_android.txt](/uploads/cc39b2ead6d0933625209aac0a62b021/crash_android.txt)[crash_android.txt](/uploads/cc39b2ead6d0933625209aac0a62b021/crash_android.txt)Iteration 18Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/235Black screen when call Android devices2020-10-05T18:34:16ZPierre LespagnolBlack screen when call Android devicesIf the daemon fail to receive the first packet sent by MediaCodec (Android with hardware acceleration), the decoding session fail to be initialised.If the daemon fail to receive the first packet sent by MediaCodec (Android with hardware acceleration), the decoding session fail to be initialised.https://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/238Cannot build without video support2021-12-21T20:03:26ZReeseCannot build without video supportrunning meson build with `-Dvideo=false` results in a variety of build errors, even when
```
else
conf.set('ENABLE_VIDEO', false)
```
is added to meson.build
Example:
```
../src/client/videomanager.cpp: In function ‘DRing::VideoFr...running meson build with `-Dvideo=false` results in a variety of build errors, even when
```
else
conf.set('ENABLE_VIDEO', false)
```
is added to meson.build
Example:
```
../src/client/videomanager.cpp: In function ‘DRing::VideoFrame* DRing::getNewFrame()’:
../src/client/videomanager.cpp:333:48: error: ‘class jami::Manager’ has no member named ‘getVideoManager’; did you mean ‘getAudioManager’?
```Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/240Merge subcall crashs2020-10-05T18:30:36ZCyrille BéraudMerge subcall crashs```[1593028407.287|12882|manager.cpp :1945 ] [call:8367187783238858] Peer ringing
[1593028407.287|12882|manager.cpp :1945 ] [call:8367187783238858] Peer ringing
[1593028407.287|12882|call.cpp :476 ] [call:8367187783...```[1593028407.287|12882|manager.cpp :1945 ] [call:8367187783238858] Peer ringing
[1593028407.287|12882|manager.cpp :1945 ] [call:8367187783238858] Peer ringing
[1593028407.287|12882|call.cpp :476 ] [call:8367187783238858] subcall 2172395774784029 answered by peer
[1593028407.287|12882|sipcall.cpp :1449 ] [sipcall:8367187783238858] merge subcall 2172395774784029
--Type <RET> for more, q to quit, c to continue without paging--
Thread 2 "dring" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff6c69700 (LWP 12882)]
0x00005555558e63f0 in jami::SIPCall::merge(jami::Call&) ()
(gdb) bt
#0 0x00005555558e63f0 in jami::SIPCall::merge(jami::Call&) ()
#1 0x000055555587066d in jami::Call::subcallStateChanged(jami::Call&, jami::Call::CallState, jami::Call::ConnectionState) ()
#2 0x0000555555870b3d in std::_Function_handler<void (), jami::runOnMainThread<jami::Call::addSubCall(jami::Call&)::{lambda(jami::Call::CallState, jami::Call::ConnectionState, int)#1}::operator()(jami::Call::CallState, jami::Call::ConnectionState, int) const::{lambda()#1}>(jami::Call::addSubCall(jami::Call&)::{lambda(jami::Call::CallState, jami::Call::ConnectionState, int)#1}::operator()(jami::Call::CallState, jami::Call::ConnectionState, int) const::{lambda()#1}&&)::{lambda()#1}>::_M_invoke(std::_Any_data const&) ()
#3 0x00005555558af251 in jami::ScheduledExecutor::loop() ()
#4 0x00005555558af369 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<jami::ScheduledExecutor::ScheduledExecutor()::{lambda()#1}> > >::_M_run()
()
#5 0x00007ffff795ccb4 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
#6 0x00007ffff7c1d609 in start_thread (arg=<optimized out>)
at pthread_create.c:477
#7 0x00007ffff764a103 in clone ()
at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb)
#0 0x00005555558e63f0 in jami::SIPCall::merge(jami::Call&) ()
#1 0x000055555587066d in jami::Call::subcallStateChanged(jami::Call&, jami::Call::CallState, jami::Call::ConnectionState) ()
#2 0x0000555555870b3d in std::_Function_handler<void (), jami::runOnMainThread<jami::Call::addSubCall(jami::Call&)::{lambda(jami::Call::CallState, jami::Call::ConnectionState, int)#1}::operator()(jami::Call::CallState, jami::Call::ConnectionState, int) const::{lambda()#1}>(jami::Call::addSubCall(jami::Call&)::{lambda(jami::Call::CallState, jami::Call::ConnectionState, int)#1}::operator()(jami::Call::CallState, jami::Call::ConnectionState, int) const::{lambda()#1}&&)::{lambda()#1}>::_M_invoke(std::_Any_data const&) ()
#3 0x00005555558af251 in jami::ScheduledExecutor::loop() ()
#4 0x00005555558af369 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<jami::ScheduledExecutor::ScheduledExecutor()::{lambda()#1}> > >::_M_run()
()
#5 0x00007ffff795ccb4 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
#6 0x00007ffff7c1d609 in start_thread (arg=<optimized out>)
at pthread_create.c:477
#7 0x00007ffff764a103 in clone ()
at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/672auto-answer - handle media change request2022-01-05T18:21:57ZMohamed Chibaniauto-answer - handle media change requestIf an account is configured in auto-answer mode, media change requests must be automatically accepted too. This also means that if the original call was an audio-only call, and the caller added the video, the camera must be enabled, unle...If an account is configured in auto-answer mode, media change requests must be automatically accepted too. This also means that if the original call was an audio-only call, and the caller added the video, the camera must be enabled, unless the video is disabled in the account settings.
Currently, when the call is an audio-only call, only the video of the caller is added.Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/225Add support for searching a JAMS user repository2020-07-13T14:11:56ZAdrien BéraudAdd support for searching a JAMS user repositoryShould be possible to search existing and new users by their first name, last name or username. Results should be returned in a predictive display (display up to 5 results to avoid having too many results)
The list of results should als...Should be possible to search existing and new users by their first name, last name or username. Results should be returned in a predictive display (display up to 5 results to avoid having too many results)
The list of results should also contains the avatar of the users (even for new users)
Example:
![contact_search](/uploads/09d4b6cbd56f62000422d7c925765438/contact_search.png)Iteration 19Adrien BéraudAdrien Béraudhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/250how to compile it for ios and android on Mac2021-05-04T21:57:19Ztomhow to compile it for ios and android on MacI want compile this project for ios and android with readme.
meet this info "SDKROOT not specified, assuming /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk"
It seems missing somethi...I want compile this project for ios and android with readme.
meet this info "SDKROOT not specified, assuming /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk"
It seems missing something. is there more detail to guide compile? thanks.https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/251compile nettle 3.5.1 error2020-12-18T19:32:03Ztomcompile nettle 3.5.1 errorcommand: ./make-ring.py --install --distribution=Android
code: release/202005
os: macos 10.15.2
export ANDROID_NDK_ROOT=/Users/tom/Library/Android/sdk/ndk/20.1.5948944
export ANDROID_NDK=/Users/tom/Library/Android/sdk/ndk/20.1...command: ./make-ring.py --install --distribution=Android
code: release/202005
os: macos 10.15.2
export ANDROID_NDK_ROOT=/Users/tom/Library/Android/sdk/ndk/20.1.5948944
export ANDROID_NDK=/Users/tom/Library/Android/sdk/ndk/20.1.5948944
export ANDROID_HOME=/Users/tom/Library/Android/sdk
export ANDROID_SDK=/Users/tom/Library/Android/sdk
export PATH=$PATH:$ANDROID_SDK/platform-tools
export ANDROID_ABI="armeabi-v7a"
configure: summary of build options:
Version: nettle 3.5.1
Host type: arm-unknown-linux-androideabi
ABI: standard
Assembly files: arm
Install prefix: /Users/tom/Documents/project/workspace-antudio/ring-project/daemon/contrib/arm-linux-androideabi
Library directory: /Users/tom/Documents/project/workspace-antudio/ring-project/daemon/contrib/arm-linux-androideabi/lib
Compiler: /Users/tom/Documents/project/workspace-antudio/ring-project/client-android/android-toolchain-21-arm/bin/arm-linux-androideabi-clang
Static libraries: yes
Shared libraries: no
Public key crypto: yes
Using mini-gmp: no
Documentation: no
cd nettle && make install
make[1]: Entering directory `/Users/tom/Documents/project/workspace-antudio/ring-project/daemon/contrib/native-arm-linux-androideabi/nettle'
make install-here
make[2]: Entering directory `/Users/tom/Documents/project/workspace-antudio/ring-project/daemon/contrib/native-arm-linux-androideabi/nettle'
./install-sh -c -d /Users/tom/Documents/project/workspace-antudio/ring-project/daemon/contrib/arm-linux-androideabi/include/nettle
/Users/tom/Documents/project/workspace-antudio/ring-project/daemon/extras/tools/build/bin/m4 ./asm.m4 machine.m4 config.m4 aes-decrypt-internal.asm >aes-decrypt-internal.s
/Users/tom/Documents/project/workspace-antudio/ring-project/client-android/android-toolchain-21-arm/bin/arm-linux-androideabi-clang -I. -I/Users/tom/Documents/project/workspace-antudio/ring-project/daemon/contrib/arm-linux-androideabi/include -fPIC -DHAVE_CONFIG_H -I/Users/tom/Documents/project/workspace-antudio/ring-project/daemon/contrib/arm-linux-androideabi/include -DNDEBUG=1 -O3 -fPIC -ggdb3 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wpointer-arith -Wbad-function-cast -Wnested-externs -fpic -c aes-decrypt.c \
&& true
/Users/tom/Documents/project/workspace-antudio/ring-project/daemon/extras/tools/build/bin/m4 ./asm.m4 machine.m4 config.m4 aes-encrypt-internal.asm >aes-encrypt-internal.s
/Users/tom/Documents/project/workspace-antudio/ring-project/client-android/android-toolchain-21-arm/bin/arm-linux-androideabi-clang -I. -I/Users/tom/Documents/project/workspace-antudio/ring-project/daemon/contrib/arm-linux-androideabi/include -fPIC -DHAVE_CONFIG_H -I/Users/tom/Documents/project/workspace-antudio/ring-project/daemon/contrib/arm-linux-androideabi/include -DNDEBUG=1 -O3 -fPIC -ggdb3 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wpointer-arith -Wbad-function-cast -Wnested-externs -fpic -c aes-encrypt.c \
&& true
/Users/tom/Documents/project/workspace-antudio/ring-project/client-android/android-toolchain-21-arm/bin/arm-linux-androideabi-clang -I. -I/Users/tom/Documents/project/workspace-antudio/ring-project/daemon/contrib/arm-linux-androideabi/include -fPIC -DHAVE_CONFIG_H -I/Users/tom/Documents/project/workspace-antudio/ring-project/daemon/contrib/arm-linux-androideabi/include -DNDEBUG=1 -O3 -fPIC -ggdb3 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wpointer-arith -Wbad-function-cast -Wnested-externs -fpic -c aes-encrypt-table.c \
&& true
/Users/tom/Documents/project/workspace-antudio/ring-project/client-android/android-toolchain-21-arm/bin/arm-linux-androideabi-clang -I. -I/Users/tom/Documents/project/workspace-antudio/ring-project/daemon/contrib/arm-linux-androideabi/include -fPIC -DHAVE_CONFIG_H -I/Users/tom/Documents/project/workspace-antudio/ring-project/daemon/contrib/arm-linux-androideabi/include -DNDEBUG=1 -O3 -fPIC -ggdb3 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wpointer-arith -Wbad-function-cast -Wnested-externs -fpic -c aes-invert-internal.c \
&& true
/Users/tom/Documents/project/workspace-antudio/ring-project/client-android/android-toolchain-21-arm/bin/arm-linux-androideabi-clang -I. -I/Users/tom/Documents/project/workspace-antudio/ring-project/daemon/contrib/arm-linux-androideabi/include -fPIC -DHAVE_CONFIG_H -I/Users/tom/Documents/project/workspace-antudio/ring-project/daemon/contrib/arm-linux-androideabi/include -DNDEBUG=1 -O3 -fPIC -ggdb3 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wpointer-arith -Wbad-function-cast -Wnested-externs -fpic -c aes-set-key-internal.c \
&& true
/bin/sh: line 1: 74038 Abort trap: 6 /Users/tom/Documents/project/workspace-antudio/ring-project/daemon/extras/tools/build/bin/m4 ./asm.m4 machine.m4 config.m4 aes-decrypt-internal.asm > aes-decrypt-internal.s
make[2]: *** [aes-decrypt-internal.o] Error 134
make[2]: *** Waiting for unfinished jobs....
/bin/sh: line 1: 74040 Abort trap: 6 /Users/tom/Documents/project/workspace-antudio/ring-project/daemon/extras/tools/build/bin/m4 ./asm.m4 machine.m4 config.m4 aes-encrypt-internal.asm > aes-encrypt-internal.s
make[2]: *** [aes-encrypt-internal.o] Error 134
for f in aes.h arcfour.h arctwo.h asn1.h blowfish.h base16.h base64.h bignum.h buffer.h camellia.h cast128.h cbc.h ccm.h cfb.h chacha.h chacha-poly1305.h ctr.h curve25519.h des.h dsa.h dsa-compat.h eax.h ecc-curve.h ecc.h ecdsa.h eddsa.h gcm.h gosthash94.h hmac.h knuth-lfib.h hkdf.h macros.h cmac.h md2.h md4.h md5.h md5-compat.h memops.h memxor.h nettle-meta.h nettle-types.h pbkdf2.h pgp.h pkcs1.h pss.h pss-mgf1.h realloc.h ripemd160.h rsa.h salsa20.h sexp.h serpent.h sha.h sha1.h sha2.h sha3.h twofish.h umac.h yarrow.h xts.h poly1305.h version.h ; do \
if [ -f "$f" ] ; then \
/usr/bin/install -c -m 644 "$f" /Users/tom/Documents/project/workspace-antudio/ring-project/daemon/contrib/arm-linux-androideabi/include/nettle ; \
else \
/usr/bin/install -c -m 644 "./$f" /Users/tom/Documents/project/workspace-antudio/ring-project/daemon/contrib/arm-linux-androideabi/include/nettle ; \
fi ; done
make[2]: Leaving directory `/Users/tom/Documents/project/workspace-antudio/ring-project/daemon/contrib/native-arm-linux-androideabi/nettle'
make[1]: *** [install] Error 2
make[1]: Leaving directory `/Users/tom/Documents/project/workspace-antudio/ring-project/daemon/contrib/native-arm-linux-androideabi/nettle'
make: *** [.nettle] Error 2
armeabi-v7a build KO
Traceback (most recent call last):
File "./make-ring.py", line 528, in <module>
main()
File "./make-ring.py", line 515, in main
run_install(parsed_args)
File "./make-ring.py", line 283, in run_install
return subprocess.run(["./compile.sh"], cwd="./client-android", check=True)
File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/subprocess.py", line 487, in run
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['./compile.sh']' returned non-zero exit status 1.
https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/249Stuck in Searching: Listen on Call ICE is not responding2020-07-09T20:19:50ZSébastien BlinStuck in Searching: Listen on Call ICE is not respondingRelated to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227
# Reproduce steps
Unknown
# Observations
+ Device A calls device B with the bug
+ device B answer its ICE for the PeerConnection request, but not for the DHT ICE...Related to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227
# Reproduce steps
Unknown
# Observations
+ Device A calls device B with the bug
+ device B answer its ICE for the PeerConnection request, but not for the DHT ICE candidates request
+ First call is failing. No fallback done because we are still in the SEARCHING state. Second call will succeed. Because the Peer negotiation is done without issue. However all first calls to device B will failIteration 19Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/253Python not receiving signals2020-06-30T13:36:11ZReesePython not receiving signalsWhat is the correct way to run DRingCtrl in Python? I've tried running it with
```
mgr = DRingCtrl('intercom', True)
mgr.start() #also tried mgr.run()
```
but whenever it is running, the daemon no longer appears to receive the invite...What is the correct way to run DRingCtrl in Python? I've tried running it with
```
mgr = DRingCtrl('intercom', True)
mgr.start() #also tried mgr.run()
```
but whenever it is running, the daemon no longer appears to receive the invite to change the state to hang up (e.g. `[call:7809055902812632] INVITE@0xa5b15274 state changed to 6 (DISCONNCTD): cause=200, tsx@0xa5b14abc status 200 (OK)`), and when the other end hangs up, the call remains in the active call list indefinitely. It does still receive calls correctly, however. Hangups and everything else also appear to work fine when the thread is not running.
Wondering if this is a bug to dig into or if I'm doing something wrong.
Wasn't sure whether this should go here or under the ring-daemon repohttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/248Stuck in Connecting/Searching: timeout duration2020-07-02T20:06:29ZSébastien BlinStuck in Connecting/Searching: timeout durationRelated to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227
Actually ICE_NEGOTIATION_TIMEOUT is 60 seconds. This is pretty long and the user will close the window before thisRelated to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227
Actually ICE_NEGOTIATION_TIMEOUT is 60 seconds. This is pretty long and the user will close the window before thisIteration 19Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/244Stuck in Connecting/Searching: Re-add timeouts2020-07-02T20:06:34ZSébastien BlinStuck in Connecting/Searching: Re-add timeoutsBecause we removed the eventloop to check pending calls, timeout are not checked and only done on successfully negotiated ICE. We should check re-add timeout to avoid any lock in SEARCHING or CONNECTING.
Related to https://git.jami.net/...Because we removed the eventloop to check pending calls, timeout are not checked and only done on successfully negotiated ICE. We should check re-add timeout to avoid any lock in SEARCHING or CONNECTING.
Related to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227
# Reproduce Steps
1. device B cut its connectivity
2. device A calls device B
5. device A is blocked in "Searching"
# Expected result
When ICE_NEGOTIATION_TIMEOUT is reached, the searching window should be closedIteration 19Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/243Stuck in Connecting: Closed sockets are not detected all the time2020-07-02T20:06:36ZSébastien BlinStuck in Connecting: Closed sockets are not detected all the timeRelated to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227
# Reproduce Steps
1. device A calls device B
2. Call is working
3. device B cut its connectivity
4. device A calls device B
5. device A is blocked in "Connecting"
...Related to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227
# Reproduce Steps
1. device A calls device B
2. Call is working
3. device B cut its connectivity
4. device A calls device B
5. device A is blocked in "Connecting"
# Expected result
Jami should detect that the socket is unusable and stop the call if fallback fails
+ icecb.on_destroy should be calledIteration 19Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/746One-sided turn issue2022-08-05T03:09:22ZSébastien BlinOne-sided turn issue# Scenario
(Not on all devices, seems a timing issue)
+ Alice got TURN disabled (ipv4 only, no upnp)
+ Bob got TURN enabled
+ Bob calls TURN
# Expected
+ TURN should be used
# Current result
+ Bob negotiation's failed (normal), but...# Scenario
(Not on all devices, seems a timing issue)
+ Alice got TURN disabled (ipv4 only, no upnp)
+ Bob got TURN enabled
+ Bob calls TURN
# Expected
+ TURN should be used
# Current result
+ Bob negotiation's failed (normal), but he doesn't wait any TURN connection (controlling_passive_timeout)
---
# Second scenario
+ First call fails sometimes
## Observations
+ Peer stop to connect to the TURN server too soon:
```
[1659635463.681|10859|manager.cpp :261 ]13:51:03.681 0x7ff984184290 Check 2: [1] 192.168.49.92:9-->192.252.140.236:19442: connection failed after 8 attempts
[1659635463.681|10859|manager.cpp :261 ]13:51:03.681 0x7ff984184290 Check 2: [1] 192.168.49.92:9-->192.252.140.236:19442: state changed from Pending to Failed
```
However, the peer is only creating the permission one second after:
```
[1659635464.702|23173|manager.cpp :261 ]13:51:04.702 tcprel0x7fa41412a670 .TX 124 bytes STUN message to 192.252.140.236:3478:
--- begin STUN message ---
STUN CreatePermission request
```
Because the first put encrypted on a hash is slower than the othersSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/730Android: Calling a device around 10 times result in daemon not responding any...2022-08-04T19:21:09ZOlivier DionAndroid: Calling a device around 10 times result in daemon not responding anymore# Devices
- Caller (linux)
- Callee (Android)
# Network topology
Anything. Can be reproduce if both devices are on the same network.
By default, the scenario is run with UPNP and TURN disabled on both devices.
# Symptoms
If y...# Devices
- Caller (linux)
- Callee (Android)
# Network topology
Anything. Can be reproduce if both devices are on the same network.
By default, the scenario is run with UPNP and TURN disabled on both devices.
# Symptoms
If you have any of the following symptoms, it's probably it.
- After around 10 successful calls, the Android device will stop receiving any new call from any peer.
- Toggling the Android account status (online/offline) will keep the green `online` label.
- No peer discovery on the DHT.
# Scenario
1. Call an Android device (can be put in auto-answer mode)
2. Wait a few seconds after picking up the call.
3. Hang up.
4. Reset the connection between the peers by disabling the **caller's** account.
5. Wait a few moment (around 5 seconds) for sockets to be released.
6. Re-enable the caller's account.
7. Jump 1.
There's a [scenario.scm](/uploads/b06305eb52ea5623575f62dd43038ab8/scenario.scm) that automated this process
- You can parameterize the waiting period for the call with `GRACE-PERIOD`
- You can parameterize duration of the call with `MEDIA-FLOW`
- To run the test, call `(run-scenario "result.txt")`.
# Edit 1
From my debugging:
- There's no leak of any file descriptor
- Memory usage is okay and does not seem to have any leak
- Logging continue (for example changing account's preferences)
# Edit 2
Other symptoms:
- Calling a peer from the Android device result in a gray screen (no red hang up button)
- Sending messages to a peer does not show in the conversation history
- In the above case, the peer is never joinedMohamed ChibaniOlivier DionMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/247Stuck in Searching/Connecting: Resolve the two requests mystery2020-07-02T20:06:32ZSébastien BlinStuck in Searching/Connecting: Resolve the two requests mysteryRelated to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227
# Reproduce steps
1. device B cut its connectivity
2. device A calls device B (with the connecting lock, cf https://git.jami.net/savoirfairelinux/ring-daemon/issue...Related to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227
# Reproduce steps
1. device B cut its connectivity
2. device A calls device B (with the connecting lock, cf https://git.jami.net/savoirfairelinux/ring-daemon/issues/243)
3. device A is blocked in "Searching"
4. after a while, device B is back online
5. device A receives 2 ICE response
# Expected results
Only one answer should be received (the one from the fallback request)Iteration 19Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/254unable to build2020-07-08T17:10:52ZReeseunable to buildI'm unable to build the latest version of the daemon.
I had previously built it at e1e3a39a, and then I rebased from master and ran `ninja` again.
```
[1/1] Linking target bin/dbus/jamid
FAILED: bin/dbus/jamid
...
/usr/bin/ld: src/li...I'm unable to build the latest version of the daemon.
I had previously built it at e1e3a39a, and then I rebased from master and ran `ninja` again.
```
[1/1] Linking target bin/dbus/jamid
FAILED: bin/dbus/jamid
...
/usr/bin/ld: src/libjami.a(plugin_pluginloaderdl.cpp.o): undefined reference to symbol 'dlopen@@GLIBC_2.4'
/usr/bin/ld: //lib/arm-linux-gnueabihf/libdl.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
```
Am I doing something wrong?https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/255Do not test libcuda on non compatible hardware2020-12-18T19:58:07ZJürgen LütersDo not test libcuda on non compatible hardwareHi all.
During a video connection between jami android and jami-gnome the file /var/log/user.log gets flooded with messages:
Jul 2 13:08:23 nuc dring: -- Init encoding for cuda with device 1.
Jul 2 13:08:23 nuc cx.ring.Ring[4352]: ...Hi all.
During a video connection between jami android and jami-gnome the file /var/log/user.log gets flooded with messages:
Jul 2 13:08:23 nuc dring: -- Init encoding for cuda with device 1.
Jul 2 13:08:23 nuc cx.ring.Ring[4352]: [AVHWDeviceContext @ 0x7fdc74a18000] Cannot load libcuda.so.1
Jul 2 13:08:23 nuc cx.ring.Ring[4352]: [AVHWDeviceContext @ 0x7fdc74a18000] Could not dynamically load CUDA
Jul 2 13:08:23 nuc dring: -- Init encoding for cuda with device 2.
Jul 2 13:08:23 nuc dring: Failed to set preset 'veryfast'
Jul 2 13:08:23 nuc dring: Failed to set tune 'zerolatency'
Jul 2 13:08:23 nuc dring: -- Starting encoding init for vaapi with default device.
Jul 2 13:08:23 nuc dring: Using hardware encoding for h264 with vaapi.
Jul 2 13:08:23 nuc cx.ring.Ring[4352]: Output #0, rtp, to 'rtp://80.134.238.234:63854':
Jul 2 13:08:23 nuc cx.ring.Ring[4352]: Metadata:
Jul 2 13:08:23 nuc cx.ring.Ring[4352]: encoder : Lavf58.29.100
Jul 2 13:08:23 nuc cx.ring.Ring[4352]: Stream #0:0: Video: h264 (Constrained Baseline), vaapi_vld, 320x240, q=
Jul 2 13:08:24 nuc cx.ring.Ring[4352]: [sdp @ 0x7fdc6c000900] max delay reached. need to consume packet
Jul 2 13:08:24 nuc cx.ring.Ring[4352]: [sdp @ 0x7fdc6c000900] RTP: missed 1 packets
Jul 2 13:08:25 nuc dring: Restarting video sender
Jul 2 13:08:25 nuc dring: -- Starting encoding init for cuda with default device.
Jul 2 13:08:25 nuc dring: -- Init encoding for cuda with device 0.
Jul 2 13:08:25 nuc cx.ring.Ring[4352]: [AVHWDeviceContext @ 0x7fdc74040400] Cannot load libcuda.so.1
cx.ring.Ring[4352]: [AVHWDeviceContext @ 0x7fdc74040400] Could not dynamically load CUDA
Jul 2 13:08:25 nuc cx.ring.Ring[4352]: [AVHWDeviceContext @ 0x7fdc74a18000] Cannot load libcuda.so.1
Jul 2 13:08:25 nuc cx.ring.Ring[4352]: [AVHWDeviceContext @ 0x7fdc74a18000] Could not dynamically load CUDA
Jul 2 13:08:25 nuc cx.ring.Ring[4352]: [AVHWDeviceContext @ 0x7fdc744d0a00] Cannot load libcuda.so.1
Jul 2 13:08:25 nuc cx.ring.Ring[4352]: [AVHWDeviceContext @ 0x7fdc744d0a00] Could not dynamically load CUDA
Jul 2 13:08:25 nuc cx.ring.Ring[4352]: [AVHWDeviceContext @ 0x7fdc74003a40] Cannot load libcuda.so.1
Jul 2 13:08:25 nuc cx.ring.Ring[4352]: [AVHWDeviceContext @ 0x7fdc74003a40] Could not dynamically load CUDA
Andoid jami 20200623-01
Jami Gnome 2020-06-30 20:45:35 UTC (debian/Gnu Linux Testing )
If i am not totally mistaken cuda is for nvidia devices only. But there is none nvidia graphic card.
Shouldn't it be suffice to scan the hardware once ?
My Hardware according to lspci
00:00.0 Host bridge: Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers (rev 08)
00:02.0 VGA compatible controller: Intel Corporation Iris Plus Graphics 655 (rev 01)
00:08.0 System peripheral: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model
00:12.0 Signal processing controller: Intel Corporation Cannon Point-LP Thermal Controller (rev 30)
00:14.0 USB controller: Intel Corporation Cannon Point-LP USB 3.1 xHCI Controller (rev 30)
00:14.2 RAM memory: Intel Corporation Cannon Point-LP Shared SRAM (rev 30)
00:14.3 Network controller: Intel Corporation Cannon Point-LP CNVi [Wireless-AC] (rev 30)
00:16.0 Communication controller: Intel Corporation Cannon Point-LP MEI Controller #1 (rev 30)
00:17.0 SATA controller: Intel Corporation Cannon Point-LP SATA Controller [AHCI Mode] (rev 30)
00:1c.0 PCI bridge: Intel Corporation Cannon Point-LP PCI Express Root Port #1 (rev f0)
00:1c.4 PCI bridge: Intel Corporation Cannon Point-LP PCI Express Root Port #5 (rev f0)
00:1d.0 PCI bridge: Intel Corporation Cannon Point-LP PCI Express Root Port #9 (rev f0)
00:1d.6 PCI bridge: Intel Corporation Cannon Point-LP PCI Express Root Port #15 (rev f0)
00:1f.0 ISA bridge: Intel Corporation Cannon Point-LP LPC Controller (rev 30)
00:1f.3 Audio device: Intel Corporation Cannon Point-LP High Definition Audio Controller (rev 30)
00:1f.4 SMBus: Intel Corporation Cannon Point-LP SMBus Controller (rev 30)
00:1f.5 Serial bus controller [0c80]: Intel Corporation Cannon Point-LP SPI Controller (rev 30)
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (6) I219-V (rev 30)
02:00.0 PCI bridge: Intel Corporation JHL6340 Thunderbolt 3 Bridge (C step) [Alpine Ridge 2C 2016] (rev 02)
03:00.0 PCI bridge: Intel Corporation JHL6340 Thunderbolt 3 Bridge (C step) [Alpine Ridge 2C 2016] (rev 02)
03:01.0 PCI bridge: Intel Corporation JHL6340 Thunderbolt 3 Bridge (C step) [Alpine Ridge 2C 2016] (rev 02)
03:02.0 PCI bridge: Intel Corporation JHL6340 Thunderbolt 3 Bridge (C step) [Alpine Ridge 2C 2016] (rev 02)
04:00.0 System peripheral: Intel Corporation JHL6340 Thunderbolt 3 NHI (C step) [Alpine Ridge 2C 2016] (rev 02)
05:00.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:00.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:01.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:02.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:03.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:04.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
07:00.0 USB controller: Fresco Logic FL1100 USB 3.0 Host Controller (rev 10)
09:00.0 USB controller: Fresco Logic FL1100 USB 3.0 Host Controller (rev 10)
0b:00.0 USB controller: Intel Corporation JHL6540 Thunderbolt 3 USB Controller (C step) [Alpine Ridge 4C 2016] (rev 02)
6c:00.0 USB controller: Intel Corporation JHL6340 Thunderbolt 3 USB 3.1 Controller (C step) [Alpine Ridge 2C 2016] (rev 02)
6e:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS522A PCI Express Card Reader (rev 01)https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/246Stuck in Searching/Connecting: Improve logs2020-07-07T17:49:52ZSébastien BlinStuck in Searching/Connecting: Improve logsEverything is in the title. The negotiation of a call can be quite complex to understand and logs should be understandable, moreover if the call fails.
Related to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227Everything is in the title. The negotiation of a call can be quite complex to understand and logs should be understandable, moreover if the call fails.
Related to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227Iteration 19Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/257Crash in pj_stun_sock_sendto2020-10-21T01:13:47ZSébastien BlinCrash in pj_stun_sock_sendto```
AddressSanitizer:DEADLYSIGNAL
=================================================================
==1395139==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7fcf06818a07 bp 0x000000000008 sp 0x7fce738a0138 T1701)
...```
AddressSanitizer:DEADLYSIGNAL
=================================================================
==1395139==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7fcf06818a07 bp 0x000000000008 sp 0x7fce738a0138 T1701)
==1395139==The signal is caused by a READ memory access.
==1395139==Hint: address points to the zero page.
#0 0x7fcf06818a06 in pj_sockaddr_cmp (/home/sblin/ring-project/daemon/src/.libs/libring.so.0+0xfdda06)
#1 0x7fcf067f7661 in pj_stun_sock_sendto (/home/sblin/ring-project/daemon/src/.libs/libring.so.0+0xfbc661)
#2 0x7fcf067ea898 in ice_tx_pkt (/home/sblin/ring-project/daemon/src/.libs/libring.so.0+0xfaf898)
#3 0x7fcf067e2fa1 in on_stun_send_msg (/home/sblin/ring-project/daemon/src/.libs/libring.so.0+0xfa7fa1)
#4 0x7fcf067f2e3e in stun_tsx_on_send_msg (/home/sblin/ring-project/daemon/src/.libs/libring.so.0+0xfb7e3e)
#5 0x7fcf067f7e7c in tsx_transmit_msg (/home/sblin/ring-project/daemon/src/.libs/libring.so.0+0xfbce7c)
#6 0x7fcf067f84b3 in pj_stun_client_tsx_send_msg (/home/sblin/ring-project/daemon/src/.libs/libring.so.0+0xfbd4b3)
#7 0x7fcf067f4439 in pj_stun_session_send_msg (/home/sblin/ring-project/daemon/src/.libs/libring.so.0+0xfb9439)
#8 0x7fcf067e8dbb in ice_sess_on_peer_connection (/home/sblin/ring-project/daemon/src/.libs/libring.so.0+0xfaddbb)
#9 0x7fcf067f54be in on_connect_complete (/home/sblin/ring-project/daemon/src/.libs/libring.so.0+0xfba4be)
#10 0x7fcf0680c28d in ioqueue_dispatch_write_event (/home/sblin/ring-project/daemon/src/.libs/libring.so.0+0xfd128d)
#11 0x7fcf0680df8a in pj_ioqueue_poll (/home/sblin/ring-project/daemon/src/.libs/libring.so.0+0xfd2f8a)
#12 0x7fcf05f263fc in jami::IceTransport::Impl::handleEvents(unsigned int) /home/sblin/ring-project/daemon/src/ice_transport.cpp:527
#13 0x7fcf05f23efb in operator() /home/sblin/ring-project/daemon/src/ice_transport.cpp:424
#14 0x7fcf05f36de1 in __invoke_impl<void, jami::IceTransport::Impl::Impl(char const*, int, bool, const jami::IceTransportOptions&)::<lambda()> > /usr/include/c++/9/bits/invoke.h:60
#15 0x7fcf05f36d96 in __invoke<jami::IceTransport::Impl::Impl(char const*, int, bool, const jami::IceTransportOptions&)::<lambda()> > /usr/include/c++/9/bits/invoke.h:95
#16 0x7fcf05f36d43 in _M_invoke<0> /usr/include/c++/9/thread:244
#17 0x7fcf05f36d19 in operator() /usr/include/c++/9/thread:251
#18 0x7fcf05f36cfd in _M_run /usr/include/c++/9/thread:195
#19 0x7fcf05730d83 (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xd6d83)
#20 0x7fcf05625608 in start_thread /build/glibc-ZN95T4/glibc-2.31/nptl/pthread_create.c:477
#21 0x7fcf0554a292 in __clone (/lib/x86_64-linux-gnu/libc.so.6+0x122292)
```Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/260A client should be able to answer a call multiple times without weird results2020-12-18T19:26:47ZSébastien BlinA client should be able to answer a call multiple times without weird results# Reproduce steps
+ Launch 2 clients with auto answer (client-gnome + python) for example or (daemon with --auto-answer + client gnome)
+ Receive a call
+ Both clients are answering => Video not ok sometimes, or no hangup available, etc...# Reproduce steps
+ Launch 2 clients with auto answer (client-gnome + python) for example or (daemon with --auto-answer + client gnome)
+ Receive a call
+ Both clients are answering => Video not ok sometimes, or no hangup available, etc
# Expected result
+ The daemon should ignore answer request if already answered, video should work and hangup toohttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/261Libring compilation fails2020-07-10T14:54:37ZJan WielkiewiczLibring compilation failsHello,
I'm trying to build libring with this commit `07188b4a717e5ac6e582d71c895b74fbbfd02b24` and it fails.
Question: are you moving to meson? I'm building with the gnu build system, but I get this:
```
CXX libringacc_la-archi...Hello,
I'm trying to build libring with this commit `07188b4a717e5ac6e582d71c895b74fbbfd02b24` and it fails.
Question: are you moving to meson? I'm building with the gnu build system, but I get this:
```
CXX libringacc_la-archive_account_manager.lo
CXX libringacc_la-server_account_manager.lo
CXX libringacc_la-namedirectory.lo
server_account_manager.cpp: In member function ‘void jami::ServerAccountManager::authFailed(jami::ServerAccountManager::TokenScope, int)’:
server_account_manager.cpp:239:91: error: ‘void dht::http::Request::terminate(const error_code&)’ is private within this context
req->terminate(code == 0 ? asio::error::not_connected : asio::error::access_denied);
^
In file included from server_account_manager.cpp:23:0:
/gnu/store/j89hgwcmm1wpnhq2scd87am2idxw0dmi-opendht-2.1.4/include/opendht/http.h:319:10: note: declared private here
void terminate(const asio::error_code& ec);
^~~~~~~~~
make[4]: *** [Makefile:722: libringacc_la-server_account_manager.lo] Error 1
make[4]: *** Waiting for unfinished jobs....
make[4]: Leaving directory '/tmp/guix-build-libring-20200708-guix-0.07188b4.drv-0/libring-source-without-contrib-20200708-guix-checkout/src/jamidht'
make[3]: *** [Makefile:772: all-recursive] Error 1
make[3]: Leaving directory '/tmp/guix-build-libring-20200708-guix-0.07188b4.drv-0/libring-source-without-contrib-20200708-guix-checkout/src/jamidht'
make[2]: *** [Makefile:1042: all-recursive] Error 1
make[2]: Leaving directory '/tmp/guix-build-libring-20200708-guix-0.07188b4.drv-0/libring-source-without-contrib-20200708-guix-checkout/src'
make[1]: *** [Makefile:530: all-recursive] Error 1
make[1]: Leaving directory '/tmp/guix-build-libring-20200708-guix-0.07188b4.drv-0/libring-source-without-contrib-20200708-guix-checkout'
make: *** [Makefile:461: all] Error 2
command "make" "-j" "10" failed with status 2
builder for `/gnu/store/13qsw49j735w0frids4kpmsj7ly1768l-libring-20200708-guix-0.07188b4.drv' failed with exit code 1
```https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/262Received pictures are not displayed - Android Beta 20200703-012020-07-09T00:50:06ZCyrille BéraudReceived pictures are not displayed - Android Beta 20200703-01Iteration 19Adrien BéraudPierre DucheminAdrien Béraudhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/263Could i use jami on raspberry pi with Pi CSI Camera?2023-09-29T09:58:40ZjoelihnCould i use jami on raspberry pi with Pi CSI Camera?I have a raspberry pi (raspbian) ,connected a picamera with csi cable.
When i run *jamid -c -d * ,the terminal output print some red error words:
*"Continuous Frame sizes not supported"*
I search this string,find in src/media/video/v4...I have a raspberry pi (raspbian) ,connected a picamera with csi cable.
When i run *jamid -c -d * ,the terminal output print some red error words:
*"Continuous Frame sizes not supported"*
I search this string,find in src/media/video/v4l2/video_device_impl.cpp: line:352
```cpp
if (frmsize.type != V4L2_FRMSIZE_TYPE_DISCRETE) {
// We do not take care of V4L2_FRMSIZE_TYPE_CONTINUOUS or V4L2_FRMSIZE_TYPE_STEPWISE
JAMI_ERR("Continuous Frame sizes not supported");
return pixelformat;
}
```
I want to know how can i support capture device that frmsize.type is STEPWISE type, like picamera.
thanks!https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/266Add RTP packet pacer2020-09-04T19:14:39ZMohamed ChibaniAdd RTP packet pacerExperiments showed that some network links are sensitive to transmission bursts which cause packet losses. Currently, encoded media (audio/video) are sent on the network as soon as they are delivered by the encoders. For instance, when a...Experiments showed that some network links are sensitive to transmission bursts which cause packet losses. Currently, encoded media (audio/video) are sent on the network as soon as they are delivered by the encoders. For instance, when a video encoder delivers key-frames, the RTP sender will typically receive many RTP packets representing a single frame, which will cause a transmission burst if sent as they arrive.
The purpose of this item is to design and implement a transmission pacer to flatten the bitrate curve in order to reduce packet losses caused by transmission bursts. The pacer will limit the rate at which the RPT packets are sent. The pacer will obviously add some delay but its impact should not be noticeable.Itération 20Pierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/267Compile and Analyze WebRTC RTP/media and related modules2022-11-26T22:44:45ZMohamed ChibaniCompile and Analyze WebRTC RTP/media and related modulesThe purpose of this activity is to perform a technical analysis on how WebRTC RTP/media will be hooked to Jami/Daemon. We need to determine how to plug WebRTC RTP/media modules to Jami/PJNAT sockets on one end, and to Jami/FFMPEG encoder...The purpose of this activity is to perform a technical analysis on how WebRTC RTP/media will be hooked to Jami/Daemon. We need to determine how to plug WebRTC RTP/media modules to Jami/PJNAT sockets on one end, and to Jami/FFMPEG encoders/decoder on the other end.
Network transport (sockets) will be provided by Jami/Daemon.
The encoding/decoding of the media will be performed by Jami/DaemonMohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/268Bip when calling another account on same device + another one2020-08-31T15:32:08ZSébastien BlinBip when calling another account on same device + another one# Reproduce steps
+ Account A on Device X and Device Y
+ Account B on Device X
+ B Calls X
+ A on X Decline the call
# Expected result
call for A on Y should stop as decline
# Current result
call for A on Y is not declined. Moreover...# Reproduce steps
+ Account A on Device X and Device Y
+ Account B on Device X
+ B Calls X
+ A on X Decline the call
# Expected result
call for A on Y should stop as decline
# Current result
call for A on Y is not declined. Moreover, if another call to B is made, a bip appears for any call
# Observation
When A on X is declined, this message appears for B
```
[1594928489.519|48744|sipvoiplink.cpp :777 ] [call:5522039602826872] INVITE@0x7ffe583685a8 state changed to 6 (DISCONNCTD): cause=481, tsx@0x7ffe583671d8 status 481 (Call/Transaction Does Not Exist)
```
Then the path is not onClosed(), but onFailure() and onPeerHangup() is not called.Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/269[POC] Account with mixing options2020-08-13T17:33:01ZSébastien Blin[POC] Account with mixing options2 users, 1 leave = freeze
mixer hears everything2 users, 1 leave = freeze
mixer hears everythingItération 20Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/270Jami daemon crash when streaming a recorded file2023-01-04T19:09:40ZPierre LespagnolJami daemon crash when streaming a recorded file# Reproduce steps
+ Record a call
+ Start a new call and stream the recorded file (.webm)
# Current result
The daemon crash in scaling part
```
Thread 91 "dring" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ff...# Reproduce steps
+ Record a call
+ Start a new call and stream the recorded file (.webm)
# Current result
The daemon crash in scaling part
```
Thread 91 "dring" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffd2ffd700 (LWP 25392)]
0x0000555556629a4a in ff_yuv_420_rgb32_ssse3 ()
(gdb) bt
#0 0x0000555556629a4a in ff_yuv_420_rgb32_ssse3 ()
#1 0x0000555556628963 in yuv420_rgb32_ssse3 (c=0x7fff351c4c00, src=0x7fffd2ff95b0, srcStride=0x7fffd2ff9590, srcSliceY=0, srcSliceH=720, dst=0x7fffd2ff95d0, dstStride=0x7fffd2ff95a0) at libswscale/x86/yuv2rgb_template.c:119
#2 0x00005555565c3f34 in sws_scale (c=<optimized out>, srcSlice=<optimized out>, srcStride=<optimized out>, srcSliceY=<optimized out>, srcSliceH=720, dst=<optimized out>, dstStride=0x7fff351c1c80) at libswscale/swscale.c:969
#3 0x00005555559bbbd3 in jami::video::VideoScaler::scale (this=0x7fffd2ff96c0, input=..., output=...) at video_scaler.cpp:60
#4 0x0000555555992b67 in jami::video::ShmHolder::renderFrame (this=0x7fff34005a20, src=...) at sinkclient.cpp:254
```https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/272Sound & Conference: Adding somebody cut the sound during 2/3 seconds2020-08-12T14:53:31ZSébastien BlinSound & Conference: Adding somebody cut the sound during 2/3 seconds# Reproduce steps
+ Add someone in the conference
# Expected result
The sound should continue
# Current result
Sometimes, during a few seconds the sound is cut# Reproduce steps
+ Add someone in the conference
# Expected result
The sound should continue
# Current result
Sometimes, during a few seconds the sound is cutItération 20Sébastien BlinMohamed ChibaniSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/271Sound & Conference: jerky sound when mixing2020-07-29T18:06:13ZSébastien BlinSound & Conference: jerky sound when mixing**TODO** I am investigating this to understand what's the real problem**TODO** I am investigating this to understand what's the real problemItération 20Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/274pjsip crash in pj_sockaddr_cmp2021-02-01T15:13:20ZSébastien Blinpjsip crash in pj_sockaddr_cmpSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/275Getting error when starting daemon: ==25277==ASan runtime does not come first...2020-10-06T02:26:26ZDoron BeharGetting error when starting daemon: ==25277==ASan runtime does not come first in initial library listHi, I'm getting this error when trying to run `$jami-daemon/lib/dring/dring`:
```
==27318==ASan runtime does not come first in initial library list; you should either link runtime to your application or manually preload it with LD_PRELO...Hi, I'm getting this error when trying to run `$jami-daemon/lib/dring/dring`:
```
==27318==ASan runtime does not come first in initial library list; you should either link runtime to your application or manually preload it with LD_PRELOAD.
```
I also noticed I get it when trying to run the tests:
https://review.jami.net/c/ring-daemon/+/15021https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/273Sound & Conference: If one member is in hold, the sound is cut for the others...2020-08-12T14:53:30ZSébastien BlinSound & Conference: If one member is in hold, the sound is cut for the others participants# Reproduce Steps
Do a conference between 3 devices
A participant switch the conference in hold
# Expected result
The others should be able to speak together
# Current result
No sound for the other participant# Reproduce Steps
Do a conference between 3 devices
A participant switch the conference in hold
# Expected result
The others should be able to speak together
# Current result
No sound for the other participantItération 20Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/241Design protocol for conference participant list sharing2021-02-04T13:56:10ZGuillaume HellerDesign protocol for conference participant list sharingSébastien BlinAdrien BéraudSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/239[daemon/ios]iPad stuck during long minutes2020-09-04T19:09:50ZSébastien Blin[daemon/ios]iPad stuck during long minutesRelated to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227
# Observations
Making calls to an ipad device. The connection is generally made without issue. But sometimes, the device is just not answering to any request durin...Related to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227
# Observations
Making calls to an ipad device. The connection is generally made without issue. But sometimes, the device is just not answering to any request during 10/15 minutes. Then it works like before
# Hypotheses
+ Don't receive anything from the proxy during X minutes?
+ Daemon locked?Itération 20Kateryna KostiukKateryna Kostiukhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/281Rendez-vous: Incoming calls should not trigger any ringtone2020-08-22T17:36:38ZSébastien BlinRendez-vous: Incoming calls should not trigger any ringtoneBecause the rendez-vous automatically answer and the host should not know if a rendez-vous is used or not, ringtone should not be started for rendez-vous accounts.Because the rendez-vous automatically answer and the host should not know if a rendez-vous is used or not, ringtone should not be started for rendez-vous accounts.Itération 21Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/285crash when canceling incoming file transfer2020-08-29T17:23:58ZAdrien Béraudcrash when canceling incoming file transferObserved on Android:
```
172 15458-15458/cx.ring I/AccountService: cancelDataTransfer() id=-8467903417826486931
173 15458-15660/cx.ring I/libdring: Channel down for incoming transfer with id(677444582472270729)
174 15458-15660/cx.ring D...Observed on Android:
```
172 15458-15458/cx.ring I/AccountService: cancelDataTransfer() id=-8467903417826486931
173 15458-15660/cx.ring I/libdring: Channel down for incoming transfer with id(677444582472270729)
174 15458-15660/cx.ring D/libdring: [FTP] file closed, rx 6684468 on 1084020092
175 15458-15553/cx.ring D/DaemonService: dataTransferEvent: transferId=-8467903417826486931, eventCode=7
175 15458-15553/cx.ring D/AccountService: Data Transfer TRANSFER_UNJOINABLE_PEER 7
--------- beginning of crash
175 15458-15546/cx.ring A/libc: FORTIFY: fwrite: null FILE*
175 15458-15553/cx.ring D/AccountService: Data Transfer 7 6684468/1084020092
177 15458-15546/cx.ring A/libc: Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 15546 (DRing), pid 15458 (cx.ring)
177 15458-15458/cx.ring D/DataTransferService: OnDestroy(), Service has been destroyed
181 15458-15553/cx.ring D/NotificationServiceImpl: handleDataTransferNotification, a data transfer event is in progress
182 15458-15553/cx.ring W/NotificationServiceImpl: showFileTransferNotification 616241383 TRANSFER_UNJOINABLE_PEER
242 15458-15791/cx.ring D/libdring: [ice:0x73afebb000] ioqueue error 120004: Interrupted system call
242 15922-15922/? I/crash_dump64: obtaining output fd from tombstoned, type: kDebuggerdTombstone
242 15458-15812/cx.ring D/libdring: [ice:0x73c4128800] ioqueue error 120004: Interrupted system call
252 15458-15557/cx.ring E/libdring: pjsip_endpt_handle_events failed with error Interrupted system call
262 1024-1024/? I//system/bin/tombstoned: received crash request for pid 15546
265 15922-15922/? I/crash_dump64: performing dump of process 15458 (target tid = 15546)
273 15922-15922/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
273 15922-15922/? A/DEBUG: Build fingerprint: 'google/coral/coral:10/QQ3A.200805.001/6578210:user/release-keys'
273 15922-15922/? A/DEBUG: Revision: 'MP1.0'
273 15922-15922/? A/DEBUG: ABI: 'arm64'
273 15922-15922/? A/DEBUG: Timestamp: 2020-08-27 13:55:13-0400
273 15922-15922/? A/DEBUG: pid: 15458, tid: 15546, name: DRing >>> cx.ring <<<
273 15922-15922/? A/DEBUG: uid: 10284
273 15922-15922/? A/DEBUG: signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
273 15922-15922/? A/DEBUG: Abort message: 'FORTIFY: fwrite: null FILE*'
273 15922-15922/? A/DEBUG: x0 0000000000000000 x1 0000000000003cba x2 0000000000000006 x3 00000074022e8ee0
273 15922-15922/? A/DEBUG: x4 0000008000808080 x5 0000008000808080 x6 0000008000808080 x7 0000000000000020
273 15922-15922/? A/DEBUG: x8 00000000000000f0 x9 5a1a961060fa0972 x10 0000000000000001 x11 0000000000000000
273 15922-15922/? A/DEBUG: x12 fffffff0fffffbdf x13 00000d3344b6f2df x14 000a3f5eb012a9fb x15 0000000006b36728
273 15922-15922/? A/DEBUG: x16 00000074f24088c0 x17 00000074f23e60c0 x18 00000074014ba000 x19 0000000000003c62
273 15922-15922/? A/DEBUG: x20 0000000000003cba x21 00000000ffffffff x22 00000074022e9750 x23 00000074022eb020
273 15922-15922/? A/DEBUG: x24 0000000000000008 x25 00000074022eb020 x26 000000745e5c54b0 x27 0000000000000002
273 15922-15922/? A/DEBUG: x28 00000074022e94e0 x29 00000074022e8f80
273 15922-15922/? A/DEBUG: sp 00000074022e8ec0 lr 00000074f239af48 pc 00000074f239af74
300 15922-15922/? A/DEBUG: backtrace:
300 15922-15922/? A/DEBUG: #00 pc 0000000000081f74 /apex/com.android.runtime/lib64/bionic/libc.so (abort+160) (BuildId: 8de865099c99977483c8947f9b7937e9)
300 15922-15922/? A/DEBUG: #01 pc 00000000000a746c /apex/com.android.runtime/lib64/bionic/libc.so (__fortify_fatal(char const*, ...)+116) (BuildId: 8de865099c99977483c8947f9b7937e9)
300 15922-15922/? A/DEBUG: #02 pc 00000000000dd054 /apex/com.android.runtime/lib64/bionic/libc.so (fwrite+296) (BuildId: 8de865099c99977483c8947f9b7937e9)
300 15922-15922/? A/DEBUG: #03 pc 00000000004cca7c /data/app/cx.ring-rfyP99rfYUYhO-o4pCexhw==/lib/arm64/libring.so (std::__ndk1::basic_filebuf<char, std::__ndk1::char_traits<char>>::sync()+288)
300 15922-15922/? A/DEBUG: #04 pc 00000000004cc1f8 /data/app/cx.ring-rfyP99rfYUYhO-o4pCexhw==/lib/arm64/libring.so (std::__ndk1::basic_filebuf<char, std::__ndk1::char_traits<char>>::close()+100)
300 15922-15922/? A/DEBUG: #05 pc 00000000006d10fc /data/app/cx.ring-rfyP99rfYUYhO-o4pCexhw==/lib/arm64/libring.so (std::__ndk1::basic_ofstream<char, std::__ndk1::char_traits<char>>::close()+40)
300 15922-15922/? A/DEBUG: #06 pc 000000000076ac30 /data/app/cx.ring-rfyP99rfYUYhO-o4pCexhw==/lib/arm64/libring.so (jami::IncomingFileTransfer::close()+188)
300 15922-15922/? A/DEBUG: #07 pc 000000000076afbc /data/app/cx.ring-rfyP99rfYUYhO-o4pCexhw==/lib/arm64/libring.so (jami::DataTransferFacade::Impl::cancel(jami::DataTransfer&)+36)
300 15922-15922/? A/DEBUG: #08 pc 000000000076bfac /data/app/cx.ring-rfyP99rfYUYhO-o4pCexhw==/lib/arm64/libring.so (jami::DataTransferFacade::cancel(unsigned long const&)+140)
300 15922-15922/? A/DEBUG: #09 pc 0000000000396cb8 /data/app/cx.ring-rfyP99rfYUYhO-o4pCexhw==/lib/arm64/libring.so (DRing::cancelDataTransfer(unsigned long const&)+48)
300 15922-15922/? A/DEBUG: #10 pc 000000000035e714 /data/app/cx.ring-rfyP99rfYUYhO-o4pCexhw==/lib/arm64/libring.so (Java_cx_ring_daemon_RingserviceJNI_cancelDataTransfer+20)
368 850-2933/? I/WifiHAL: event received NL80211_CMD_VENDOR, vendor_id = 0x1374, subcmd = 0xa
```Itération 21Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/279RendezVous: The host can hear the rendez vous even when detached2020-08-22T11:16:47ZSébastien BlinRendezVous: The host can hear the rendez vous even when detached# Reproduce steps
To determine, but it's the case after some rdv
# Current result
The host can hear the rendez vous even when detached
# Expected result
The host should not hear the rendez-vous# Reproduce steps
To determine, but it's the case after some rdv
# Current result
The host can hear the rendez vous even when detached
# Expected result
The host should not hear the rendez-vousItération 21Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/280Video not freezing if call is on hold2020-08-18T23:16:13ZAline Gondim SantosVideo not freezing if call is on holdIf there's a call between A and B and A receives/does another call to C, B continues to see A's image. The video is not freezing.If there's a call between A and B and A receives/does another call to C, B continues to see A's image. The video is not freezing.Itération 21https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/300Swarm: fix potential crash + verify libasan + sonarqube outputs2021-03-04T20:01:49ZSébastien BlinSwarm: fix potential crash + verify libasan + sonarqube outputs
+ Remove todos
+ Verify tests
+ Remove todos
+ Verify testsSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/282Data transfers blocks after some times2020-09-30T19:02:04ZCyrille BéraudData transfers blocks after some timeshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/283Conference (participant side), muting the video cut the whole video during a ...2020-09-30T19:37:15ZSébastien BlinConference (participant side), muting the video cut the whole video during a few secondshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/287Jami version - Use the "User-Agent" SIP header to advertise the Jami/Daemon v...2021-02-04T13:56:21ZMohamed ChibaniJami version - Use the "User-Agent" SIP header to advertise the Jami/Daemon versionWhen establishing a call with a peer, there is no reliable way to know which version of Jami/Daemon the peer is using. As a solution, we will use the "User-Agent" SIP header to advertise Jami/Daemon version.When establishing a call with a peer, there is no reliable way to know which version of Jami/Daemon the peer is using. As a solution, we will use the "User-Agent" SIP header to advertise Jami/Daemon version.Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/335UPNP/NAT-PMP - add a handler for automatic port mapping provisioning2021-02-15T19:32:05ZMohamed ChibaniUPNP/NAT-PMP - add a handler for automatic port mapping provisioningAdd a handler for the provisioned port mappings (see #334 ). The handler must automatically maintain a pool of mapping ready for use whenever a call is started (outgoing/incoming). The handler must create new mappings if the number of av...Add a handler for the provisioned port mappings (see #334 ). The handler must automatically maintain a pool of mapping ready for use whenever a call is started (outgoing/incoming). The handler must create new mappings if the number of available mappings drops under a pre-defined limit, and must also delete unnecessary mappings when the number of mapping exceeds a defined max limit.Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/288Connectivity: be more resilient if a TURN server is not available2021-12-29T21:18:42ZSébastien BlinConnectivity: be more resilient if a TURN server is not available# Reproduce steps
+ In the settings change the turn address to something that will not work but resolvable (ex: enconn.fr)
+ Try to do a call
# Expected results
+ The call should work as soon as possible with the TURN ignored
# Curre...# Reproduce steps
+ In the settings change the turn address to something that will not work but resolvable (ex: enconn.fr)
+ Try to do a call
# Expected results
+ The call should work as soon as possible with the TURN ignored
# Current result
+ The client try to connect to the TURN server for each ICE and result with a timeout of several seconds (~20 on linux) for each ICE negotiations making the call just unusable
# Why?
When making a call, the first step is to gather all candidates and send this message through the DHT (or direct p2p connection if available). But to gather the TURN candidate, pjsip needs to connect to it and ask for a new session. For TCP connections, the connect() will take a lot of time to timeout (depending on /proc/sys/net/ipv4/tcp_syn_retries), for UDP I didn't dig enough to fully understand what pjsip is waiting, but I think it's something related to that candidate allocation.
# Solutions
Several solutions can be created:
1. (pjsip specific) A new timer for TURN candidate creation can be created inside pjsip, to be able to ignore TURN candidates if it's taking too long. Because Jami is a real time communication app, if the allocation is taking more than 3 seconds, this means that we are taking too much time and it's not acceptable.
2. (system + pjsip specific) Manually set the connection timeout on the sockets. For TCP, we need to do a setsockopt on TCP_SYNCNT. 2 SYN retries is acceptable imho (that's about 3 seconds. First packet + 1 retry). A solution need to be created for platforms not supporting this op. For UDP as I didn't dig enough, I don't really know what's really blocking so this will need further investigation
3. (best solution imho) Support the RFC for Trickle ICE. I don't really like 1 or 2 because sometimes TURN can work and we will ignore that fact if it's taking too long. Trickle ICE will allow us to send candidates as soon as it's gathered. This means we will be able to send separately host candidates, UPnP, relays like TURN. This is clearly the solution that will take the more time to implement, but the best solution imho.
Note for 3: the drawback I see is that, because we will send candidates separately, this will generate multiple values on the DHT instead of one. Which is a bit bad.Backloghttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/289Android - Audio does not automatically routed to headsets when plugged2020-09-04T18:41:35ZMohamed ChibaniAndroid - Audio does not automatically routed to headsets when pluggedOn Android, if a call is started on loudspeakers, the audio is not automatically routed to the headset if it's plugged. The user has to tap on the speaker icon on the UI, to manually route the audio to the headset.On Android, if a call is started on loudspeakers, the audio is not automatically routed to the headset if it's plugged. The user has to tap on the speaker icon on the UI, to manually route the audio to the headset.https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/559Jenkins: fix ut_call2021-06-07T19:28:17ZSébastien BlinJenkins: fix ut_callSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/293Swarm: multi-device management2020-09-18T19:50:25ZSébastien BlinSwarm: multi-device managementhttps://git.jami.net/savoirfairelinux/ring-project/wikis/technical/6.2.-Sync-Protocol
Related patch: https://review.jami.net/c/ring-daemon/+/15584https://git.jami.net/savoirfairelinux/ring-project/wikis/technical/6.2.-Sync-Protocol
Related patch: https://review.jami.net/c/ring-daemon/+/15584Swarm-chatSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/303Swarm: (Missing RFC) Informations in the request2021-07-09T18:43:54ZSébastien BlinSwarm: (Missing RFC) Informations in the requestWhat needs to be included in the request and how?
An avatar?
A title?
A short message linked to the invite?What needs to be included in the request and how?
An avatar?
A title?
A short message linked to the invite?Adrien BéraudSébastien BlinAdrien Béraudhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/301No relay (Turn) candidate in SDP with IOS when being connected in LTE/4G2021-02-17T16:19:15ZCyrille BéraudNo relay (Turn) candidate in SDP with IOS when being connected in LTE/4GSee attached file for log (with an Android comparison)[sdpios-andoid.log](/uploads/891e408417fd3059abed50184563f396/sdpios-andoid.log)
To reproduce:
Be connected on LTE/4G, make a call.
btw, why all the addresses are twice as candidate?See attached file for log (with an Android comparison)[sdpios-andoid.log](/uploads/891e408417fd3059abed50184563f396/sdpios-andoid.log)
To reproduce:
Be connected on LTE/4G, make a call.
btw, why all the addresses are twice as candidate?BacklogMohamed ChibaniKateryna KostiukSébastien BlinMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/62Offline messages2020-09-30T21:15:41ZSébastien BlinOffline messagesTODO: investigate.
Some keywords:
+ Maidsafe
+ IPFS
+ SupernodesTODO: investigate.
Some keywords:
+ Maidsafe
+ IPFS
+ SupernodesSwarm-chathttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/63Manage database instead of LRC.2020-09-24T20:21:25ZSébastien BlinManage database instead of LRC.The daemon should manage the Ring database instead the client.
This will allow the daemon to synchronize messages between all devices for example.The daemon should manage the Ring database instead the client.
This will allow the daemon to synchronize messages between all devices for example.Swarm-chathttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/306jams contact synchro - retrieve and display avatar + contact first name/last ...2020-12-24T21:26:58ZGuillaume Hellerjams contact synchro - retrieve and display avatar + contact first name/last nameWhen the contact list is retrieved, only the username is displayed. vcard is exchanged after first interaction with the contact
![image](/uploads/0db02a44e73c4c580256fa1e624f63c0/image.png)
Aim is to retrieve the avatar and contact fir...When the contact list is retrieved, only the username is displayed. vcard is exchanged after first interaction with the contact
![image](/uploads/0db02a44e73c4c580256fa1e624f63c0/image.png)
Aim is to retrieve the avatar and contact first/name so info can be displayed directly when the user connects or the contact list is synchronized, without having to wait for an interaction between each contact to retrieve the vcard
even more important when we are in LDAP/AD config as we have no username
![image](/uploads/44c0ea92833eb9ac4da4008a2452eb6e/image.png)Adrien BéraudAdrien Béraudhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/307heap use-after-free2020-09-16T17:51:39ZSébastien Blinheap use-after-free```
=================================================================
==2366477==ERROR: AddressSanitizer: heap-use-after-free on address 0x6130000b40c8 at pc 0x7f38b551857b bp 0x7f389e31eba0 sp 0x7f389e31eb90
READ of size 8 at 0x6130000b...```
=================================================================
==2366477==ERROR: AddressSanitizer: heap-use-after-free on address 0x6130000b40c8 at pc 0x7f38b551857b bp 0x7f389e31eba0 sp 0x7f389e31eb90
READ of size 8 at 0x6130000b40c8 thread T176
#0 0x7f38b551857a in jami::DhtPeerConnector::Impl::ClientConnector::process()::{lambda(jami::tls::TlsSessionState)#2}::operator()(jami::tls::TlsSessionState) const::{lambda(unsigned long const&, DRing::DataTransferEventCode const&)#2}::operator()(unsigned long const, DRing::DataTransferEventCode const) const /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:475
#1 0x7f38b5523a9a in std::_Function_handler<void (unsigned long const&, DRing::DataTransferEventCode const&), jami::DhtPeerConnector::Impl::ClientConnector::process()::{lambda(jami::tls::TlsSessionState)#2}::operator()(jami::tls::TlsSessionState) const::{lambda(unsigned long const&, DRing::DataTransferEventCode const&)#2}>::_M_invoke(std::_Any_data const&, unsigned long const&, DRing::DataTransferEventCode const&) /usr/include/c++/9/bits/std_function.h:300
#2 0x7f38b4f8ab32 in std::function<void (unsigned long const&, DRing::DataTransferEventCode const&)>::operator()(unsigned long const&, DRing::DataTransferEventCode const&) const /usr/include/c++/9/bits/std_function.h:688
#3 0x7f38b4f7dcbe in jami::SubOutgoingFileTransfer::emit(DRing::DataTransferEventCode) const /home/amarok/Projects/jami/daemon/src/data_transfer.cpp:468
#4 0x7f38b4f7c993 in jami::SubOutgoingFileTransfer::closeAndEmit(DRing::DataTransferEventCode) const /home/amarok/Projects/jami/daemon/src/data_transfer.cpp:400
#5 0x7f38b4f7c908 in jami::SubOutgoingFileTransfer::close() /home/amarok/Projects/jami/daemon/src/data_transfer.cpp:390
#6 0x7f38b4f7e562 in jami::OutgoingFileTransfer::close() /home/amarok/Projects/jami/daemon/src/data_transfer.cpp:573
#7 0x7f38b4f82b62 in jami::DataTransferFacade::close(unsigned long const&) /home/amarok/Projects/jami/daemon/src/data_transfer.cpp:916
#8 0x7f38b54fce1c in operator() /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:820
#9 0x7f38b55075af in _M_invoke /usr/include/c++/9/bits/std_function.h:300
#10 0x7f38b57c4335 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<dht::ThreadPool::run(std::function<void ()>&&)::{lambda()#1}> > >::_M_run() (/home/amarok/Projects/jami/daemon/src/.libs/libring.so.0+0x10a3335)
#11 0x7f38b3ae93d3 (/lib64/libstdc++.so.6+0xd73d3)
#12 0x7f38b41424e1 in start_thread (/lib64/libpthread.so.0+0x94e1)
#13 0x7f38b37ea6c2 in __GI___clone (/lib64/libc.so.6+0x1016c2)
0x6130000b40c8 is located 8 bytes inside of 344-byte region [0x6130000b40c0,0x6130000b4218)
freed by thread T176 here:
#0 0x7f38b6ebf175 in operator delete(void*, unsigned long) (/lib64/libasan.so.5+0x111175)
#1 0x7f38b55262ce in std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector>::operator()(jami::DhtPeerConnector::Impl::ClientConnector*) const /usr/include/c++/9/bits/unique_ptr.h:81
#2 0x7f38b551f6de in std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> >::~unique_ptr() /usr/include/c++/9/bits/unique_ptr.h:292
#3 0x7f38b553c193 in std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >::~pair() /usr/include/c++/9/bits/stl_pair.h:208
#4 0x7f38b553c1b3 in void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::destroy<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >(std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >*) /usr/include/c++/9/ext/new_allocator.h:153
#5 0x7f38b5539de4 in void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > > >::destroy<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >(std::allocator<std::_Rb_tree_node<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >&, std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >*) /usr/include/c++/9/bits/alloc_traits.h:497
#6 0x7f38b553450a in std::_Rb_tree<std::pair<dht::Hash<20ul>, unsigned long>, std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >, std::_Select1st<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >, std::less<std::pair<dht::Hash<20ul>, unsigned long> >, std::allocator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::_M_destroy_node(std::_Rb_tree_node<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >*) /usr/include/c++/9/bits/stl_tree.h:642
#7 0x7f38b5529d0c in std::_Rb_tree<std::pair<dht::Hash<20ul>, unsigned long>, std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >, std::_Select1st<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >, std::less<std::pair<dht::Hash<20ul>, unsigned long> >, std::allocator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::_M_drop_node(std::_Rb_tree_node<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >*) /usr/include/c++/9/bits/stl_tree.h:650
#8 0x7f38b55369d3 in std::_Rb_tree<std::pair<dht::Hash<20ul>, unsigned long>, std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >, std::_Select1st<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >, std::less<std::pair<dht::Hash<20ul>, unsigned long> >, std::allocator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::_M_erase_aux(std::_Rb_tree_const_iterator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >) /usr/include/c++/9/bits/stl_tree.h:2511
#9 0x7f38b552fcf5 in std::_Rb_tree<std::pair<dht::Hash<20ul>, unsigned long>, std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >, std::_Select1st<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >, std::less<std::pair<dht::Hash<20ul>, unsigned long> >, std::allocator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::_M_erase_aux(std::_Rb_tree_const_iterator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >, std::_Rb_tree_const_iterator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >) /usr/include/c++/9/bits/stl_tree.h:2525
#10 0x7f38b552686c in std::_Rb_tree<std::pair<dht::Hash<20ul>, unsigned long>, std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >, std::_Select1st<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >, std::less<std::pair<dht::Hash<20ul>, unsigned long> >, std::allocator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::erase(std::pair<dht::Hash<20ul>, unsigned long> const&) /usr/include/c++/9/bits/stl_tree.h:2536
#11 0x7f38b551f842 in std::map<std::pair<dht::Hash<20ul>, unsigned long>, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> >, std::less<std::pair<dht::Hash<20ul>, unsigned long> >, std::allocator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::erase(std::pair<dht::Hash<20ul>, unsigned long> const&) /usr/include/c++/9/bits/stl_map.h:1068
#12 0x7f38b54fcc3b in operator() /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:809
#13 0x7f38b55075af in _M_invoke /usr/include/c++/9/bits/std_function.h:300
#14 0x7f38b57c4335 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<dht::ThreadPool::run(std::function<void ()>&&)::{lambda()#1}> > >::_M_run() (/home/amarok/Projects/jami/daemon/src/.libs/libring.so.0+0x10a3335)
#15 0x7f38b52c0877 in dht::Hash<20ul>::to_c_str() const /home/amarok/Projects/jami/daemon/contrib/x86_64-redhat-linux/include/opendht/infohash.h:367
previously allocated by thread T183 here:
#0 0x7f38b6ebda97 in operator new(unsigned long) (/lib64/libasan.so.5+0x10fa97)
#1 0x7f38b551f5e3 in std::_MakeUniq<jami::DhtPeerConnector::Impl::ClientConnector>::__single_object std::make_unique<jami::DhtPeerConnector::Impl::ClientConnector, jami::DhtPeerConnector::Impl&, unsigned long const&, dht::Hash<20ul> const&, std::shared_ptr<dht::crypto::Certificate> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (jami::PeerConnection*)> const&>(jami::DhtPeerConnector::Impl&, unsigned long const&, dht::Hash<20ul> const&, std::shared_ptr<dht::crypto::Certificate> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (jami::PeerConnection*)> const&) /usr/include/c++/9/bits/unique_ptr.h:857
#2 0x7f38b54fc8c1 in jami::DhtPeerConnector::Impl::onAddDevice(dht::Hash<20ul> const&, unsigned long const&, std::shared_ptr<dht::crypto::Certificate> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (jami::PeerConnection*)> const&) /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:788
#3 0x7f38b54ffd9c in operator() /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:1016
#4 0x7f38b5508d45 in _M_invoke /usr/include/c++/9/bits/std_function.h:300
#5 0x7f38b559288c in std::function<void (std::shared_ptr<dht::crypto::Certificate> const&)>::operator()(std::shared_ptr<dht::crypto::Certificate> const&) const /usr/include/c++/9/bits/std_function.h:688
#6 0x7f38b558250e in jami::AccountManager::findCertificate(dht::Hash<20ul> const&, std::function<void (std::shared_ptr<dht::crypto::Certificate> const&)>&&) /home/amarok/Projects/jami/daemon/src/jamidht/account_manager.cpp:430
#7 0x7f38b537dd77 in jami::JamiAccount::findCertificate(dht::Hash<20ul> const&, std::function<void (std::shared_ptr<dht::crypto::Certificate> const&)>&&) /home/amarok/Projects/jami/daemon/src/jamidht/jamiaccount.cpp:2586
#8 0x7f38b55007e2 in operator() /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:1013
#9 0x7f38b5508ff5 in _M_invoke /usr/include/c++/9/bits/std_function.h:300
#10 0x7f38b55934ea in std::function<void (dht::Hash<20ul> const&)>::operator()(dht::Hash<20ul> const&) const /usr/include/c++/9/bits/std_function.h:688
#11 0x7f38b5585118 in operator() /home/amarok/Projects/jami/daemon/src/jamidht/account_manager.cpp:559
#12 0x7f38b5588d4c in _M_invoke /usr/include/c++/9/bits/std_function.h:285
#13 0x7f38b5595cc6 in std::function<bool (jami::DeviceAnnouncement&&)>::operator()(jami::DeviceAnnouncement&&) const /usr/include/c++/9/bits/std_function.h:688
#14 0x7f38b559378e in dht::DhtRunner::get<jami::DeviceAnnouncement>(dht::Hash<20ul>, std::function<bool (jami::DeviceAnnouncement&&)>, std::function<void (bool)>)::{lambda(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&)#1}::operator()(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&) const /home/amarok/Projects/jami/daemon/contrib/x86_64-redhat-linux/include/opendht/dhtrunner.h:112
#15 0x7f38b559a684 in std::_Function_handler<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&), dht::DhtRunner::get<jami::DeviceAnnouncement>(dht::Hash<20ul>, std::function<bool (jami::DeviceAnnouncement&&)>, std::function<void (bool)>)::{lambda(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&)#1}>::_M_invoke(std::_Any_data const&, std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&) /usr/include/c++/9/bits/std_function.h:285
#16 0x7f38b58788e6 in std::_Function_handler<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&), dht::SecureDht::getCallbackFilter(std::function<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&)> const&, dht::Value::Filter&&)::{lambda(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&)#1}>::_M_invoke(std::_Any_data const&, std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&) (/home/amarok/Projects/jami/daemon/src/.libs/libring.so.0+0x11578e6)
Thread T176 created by T0 here:
#0 0x7f38b6de8955 in pthread_create (/lib64/libasan.so.5+0x3a955)
#1 0x7f38b3ae9698 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/lib64/libstdc++.so.6+0xd7698)
Thread T183 created by T1 here:
#0 0x7f38b6de8955 in pthread_create (/lib64/libasan.so.5+0x3a955)
#1 0x7f38b3ae9698 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/lib64/libstdc++.so.6+0xd7698)
Thread T1 created by T0 here:
#0 0x7f38b6de8955 in pthread_create (/lib64/libasan.so.5+0x3a955)
#1 0x7f38b3ae9698 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/lib64/libstdc++.so.6+0xd7698)
#2 0x7f38b4fa185c in jami::ScheduledExecutor::ScheduledExecutor() /home/amarok/Projects/jami/daemon/src/scheduled_executor.cpp:29
#3 0x7f38b4e2225e in jami::Manager::ManagerPimpl::ManagerPimpl(jami::Manager&) /home/amarok/Projects/jami/daemon/src/manager.cpp:443
#4 0x7f38b4e253d7 in jami::Manager::Manager() /home/amarok/Projects/jami/daemon/src/manager.cpp:720
#5 0x7f38b4e251a3 in jami::Manager::instance() /home/amarok/Projects/jami/daemon/src/manager.cpp:695
#6 0x7f38b4f399c0 in DRing::init(DRing::InitFlag) /home/amarok/Projects/jami/daemon/src/ring_api.cpp:57
#7 0x44c5e3 in DBusClient::initLibrary(int) /home/amarok/Projects/jami/daemon/bin/dbus/dbusclient.cpp:245
#8 0x441104 in DBusClient::DBusClient(int, bool) /home/amarok/Projects/jami/daemon/bin/dbus/dbusclient.cpp:108
#9 0x440895 in void __gnu_cxx::new_allocator<DBusClient>::construct<DBusClient, int&, bool&>(DBusClient*, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x440895)
#10 0x440675 in void std::allocator_traits<std::allocator<DBusClient> >::construct<DBusClient, int&, bool&>(std::allocator<DBusClient>&, DBusClient*, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x440675)
#11 0x44030c in std::_Sp_counted_ptr_inplace<DBusClient, std::allocator<DBusClient>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<int&, bool&>(std::allocator<DBusClient>, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x44030c)
#12 0x43fda3 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<DBusClient, std::allocator<DBusClient>, int&, bool&>(DBusClient*&, std::_Sp_alloc_shared_tag<std::allocator<DBusClient> >, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x43fda3)
#13 0x43f989 in std::__shared_ptr<DBusClient, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<DBusClient>, int&, bool&>(std::_Sp_alloc_shared_tag<std::allocator<DBusClient> >, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x43f989)
#14 0x43efd5 in std::shared_ptr<DBusClient>::shared_ptr<std::allocator<DBusClient>, int&, bool&>(std::_Sp_alloc_shared_tag<std::allocator<DBusClient> >, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x43efd5)
#15 0x43e6c6 in std::shared_ptr<DBusClient> std::allocate_shared<DBusClient, std::allocator<DBusClient>, int&, bool&>(std::allocator<DBusClient> const&, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x43e6c6)
#16 0x43de28 in std::shared_ptr<DBusClient> std::make_shared<DBusClient, int&, bool&>(int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x43de28)
#17 0x43cda1 in main /home/amarok/Projects/jami/daemon/bin/main.cpp:218
#18 0x7f38b37101a2 in __libc_start_main (/lib64/libc.so.6+0x271a2)
SUMMARY: AddressSanitizer: heap-use-after-free /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:475 in jami::DhtPeerConnector::Impl::ClientConnector::process()::{lambda(jami::tls::TlsSessionState)#2}::operator()(jami::tls::TlsSessionState) const::{lambda(unsigned long const&, DRing::DataTransferEventCode const&)#2}::operator()(unsigned long const, DRing::DataTransferEventCode const) const
Shadow bytes around the buggy address:
0x0c268000e7c0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c268000e7d0: fd fd fd fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c268000e7e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c268000e7f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c268000e800: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c268000e810: fa fa fa fa fa fa fa fa fd[fd]fd fd fd fd fd fd
0x0c268000e820: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c268000e830: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c268000e840: fd fd fd fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c268000e850: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c268000e860: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
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
==2366477==ABORTING
```Itération 21Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/308conference - can not maximize participant if invitation is still pending2020-09-15T17:44:36ZGuillaume Hellerconference - can not maximize participant if invitation is still pendingSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/309Known connectivity issues2021-01-31T21:27:08ZSébastien BlinKnown connectivity issuesThis is more a note than a real issue, but used to group what's known, in progress and missing
# Connecting status
Maybe still there. But for now, the scenarios I see are not related (last week was due to TURN changes). So for now, **w...This is more a note than a real issue, but used to group what's known, in progress and missing
# Connecting status
Maybe still there. But for now, the scenarios I see are not related (last week was due to TURN changes). So for now, **wontfix** til no new precise scenario. Too much time lost for non reproducible scenarios
# UPnP
## UPnP candidate selection
Generally not chosen. The current question is to determine why it's not the case
Observation: Lot of timeout when adding candidates
## Improve the current code
https://git.jami.net/savoirfairelinux/ring-client-android/issues/740
## Add libpcp?
Unanswered for now
# IPv6
## TURN not added in IPv6
cf https://git.jami.net/savoirfairelinux/ring-daemon/issues/301#note_21918
This patch solves current state for daemon + pjsip: https://review.jami.net/c/ring-daemon/+/15606
However still a TODO: update our TURN configuration to allow both IPv6 + IPv4 selection as specified in the issue
## IPv6 only to IPv4
All is there: https://git.jami.net/savoirfairelinux/ring-client-ios/issues/46
# iOS
## IPv4 addresses are not always resolved
Solved by https://review.jami.net/c/ring-daemon/+/15655 but still in discussion with pjsip
# Android
## Wake up after a night
Some devices are not correctly awoken. First lead was a lock solved by https://github.com/savoirfairelinux/opendht/commit/23a75a3f504938771649a5791451207b366fa351
However still some tests to know if there is more than one issue, cause the OS can be pretty aggressive with Doze Mode and constructors (cf https://dontkillmyapp.com/).
# Ice possible evolutions
+ Implement latest RFCs
+ Get candidates as soon as available to avoid any delay in TURN resolution for example
+ Follow a connectivity change to update sockets when going from wifi to 3g for example
+ https://git.jami.net/savoirfairelinux/ring-daemon/issues/288
# Misc
+ Merge current stack into pjsip master to avoid to manage patches
+ Investigate: https://git.jami.net/savoirfairelinux/ring-daemon/issues/274 but it's been a while I don't see this, so for now, I think I will closehttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/310name server address default value should be set to ns.jami.net (and not "")2021-08-19T20:37:38ZGuillaume Hellername server address default value should be set to ns.jami.net (and not "")https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/311Messages not syncing across devices2022-09-05T14:19:42ZCalle KaboMessages not syncing across devicesScenario:
I'm logged in to my ring account on android and linux (my laptop).
I send a message to a contact from my android device.
Currently:
My message doesn't show up on my laptop
Expectation:
My message to show up on my laptopScenario:
I'm logged in to my ring account on android and linux (my laptop).
I send a message to a contact from my android device.
Currently:
My message doesn't show up on my laptop
Expectation:
My message to show up on my laptopSwarm-chatSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/313Support for https://tools.ietf.org/html/rfc43172021-05-13T18:34:56ZSébastien BlinSupport for https://tools.ietf.org/html/rfc4317To allow us to switch between audio only/video onlyTo allow us to switch between audio only/video onlyhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/294Swarm: default branch should not be "master" but "main"2021-02-19T17:12:18ZSébastien BlinSwarm: default branch should not be "master" but "main"Swarm-chatSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/315rendezvous: cannot change layout of some participants2020-09-25T18:37:35ZGuillaume Hellerrendezvous: cannot change layout of some participantsScenario 1:
* users participate in a rdv
* you should be able to change the layout, no matter the participant selected
* end the rdv
* do not restart your jami, do a new rendezvous with the same participants
--> you should not be abl...Scenario 1:
* users participate in a rdv
* you should be able to change the layout, no matter the participant selected
* end the rdv
* do not restart your jami, do a new rendezvous with the same participants
--> you should not be able to select at least one of the participant
Scenario 2:
* users participate in a rdv
* you should be able to change the layout, no matter the participant selected
* one of the participant hangs up then call again
* in some case, it is not possible to change the layout of this participantSébastien BlinSébastien Blin