jami-daemon issueshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues2021-03-31T19:50:42Zhttps://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/489conversation: no audio in video files2021-04-01T13:55:23ZKateryna Kostiukconversation: no audio in video files- go to a conversation and record a video file
- play a file. Result: The file is playing but no audio
same for received video files.
Caused by enabling decode_fec- go to a conversation and record a video file
- play a file. Result: The file is playing but no audio
same for received video files.
Caused by enabling decode_fecPierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/488SIP account: app crashes when finishing call2021-04-28T14:58:56ZKateryna KostiukSIP account: app crashes when finishing call- client B calls client A
- call starts normally
- A hangup call
- app crashed on B
thread #9, stop reason = EXC_BAD_ACCESS (code=1, address=0xb9c6d4d1b9ee649d)
frame #0: 0x000000018ffcc804 libsystem_c.dylib`strncasecmp_l + 92
...- client B calls client A
- call starts normally
- A hangup call
- app crashed on B
thread #9, stop reason = EXC_BAD_ACCESS (code=1, address=0xb9c6d4d1b9ee649d)
frame #0: 0x000000018ffcc804 libsystem_c.dylib`strncasecmp_l + 92
frame #1: 0x0000000103449bfc Ring`pj_stricmp2 + 72
* frame #2: 0x000000010361b4ec Ring`jami::Sdp::getMediaSlots(this=0x00000002801e5fb0, session=0x000000010f8e8a28, remote=false) const at sdp.cpp:595:14
frame #3: 0x000000010361c0f0 Ring`jami::Sdp::getMediaSlots(this=0x00000002801e5fb0) const at sdp.cpp:694:16
frame #4: 0x000000010367d960 Ring`jami::SIPCall::startAllMedia(this=0x000000010f8be018) at sipcall.cpp:1174:24
frame #5: 0x00000001036b29f8 Ring`jami::SIPCall::onMediaUpdate(this=0x0000000283a604a8)::$_15::operator()() const at sipcall.cpp:1405:24
frame #6: 0x00000001036b2894 Ring`void jami::runOnMainThread<jami::SIPCall::onMediaUpdate()::$_15>(this=0x0000000283a604a8)::$_15&&)::'lambda'()::operator()() at manager.h:972:87
frame #7: 0x00000001036b285c Ring`decltype(__f=0x0000000283a604a8)::$_15>(fp)(std::__1::forward<void jami::runOnMainThread<jami::SIPCall::onMediaUpdate()::$_15>(jami::SIPCall::onMediaUpdate()::$_15&&)::'lambda'()&>(fp0)...)) std::__1::__invoke<void jami::runOnMainThread<jami::SIPCall::onMediaUpdate()::$_15>(jami::SIPCall::onMediaUpdate()::$_15&&)::'lambda'()&>(jami::SIPCall::onMediaUpdate()::$_15&&, void jami::runOnMainThread<jami::SIPCall::onMediaUpdate()::$_15>(jami::SIPCall::onMediaUpdate()::$_15&&)::'lambda'()&...) at type_traits:3545:1
caused by accessing inviteSession after the destructionMohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/487libnatpmp is not detected in configure step on linux2021-03-31T13:57:08ZMohamed Chibanilibnatpmp is not detected in configure step on linuxMaxim CournoyerMaxim Cournoyerhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/484Avatar is not shown if a conference participant mute his video2021-04-30T03:02:40ZPierre LespagnolAvatar is not shown if a conference participant mute his videoAline Gondim SantosAline Gondim Santoshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/483SIP account: app freezes when finishing call2023-09-29T10:00:22ZKateryna KostiukSIP account: app freezes when finishing callBacklogMohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/481Crash in Manager::finish()2021-03-19T17:45:38ZMohamed ChibaniCrash in Manager::finish()Daemon crashes in Manager::finish() (pimpl_->sipLink_->shutdown()) if the manager was never initialized.
This typically happens with unit tests such as ut_media_encoder.Daemon crashes in Manager::finish() (pimpl_->sipLink_->shutdown()) if the manager was never initialized.
This typically happens with unit tests such as ut_media_encoder.Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/480Validate Beta Swarm windows2021-07-16T18:09:48ZSébastien BlinValidate Beta Swarm windowsSwarm-chatGuillaume HellerGuillaume Hellerhttps://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/477[To confirm] multidevice issue2021-03-15T16:32:53ZSébastien Blin[To confirm] multidevice issueAlice (2 devices A1, A0), Bob, Carla
+ A0 et Bob in call
+ Carla sends a message to Alice (or call), A1 will receives but not A0Alice (2 devices A1, A0), Bob, Carla
+ A0 et Bob in call
+ Carla sends a message to Alice (or call), A1 will receives but not A0Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/475swarm: conversation not loaded for disabled account2021-03-10T17:55:47ZKateryna Kostiukswarm: conversation not loaded for disabled accounthttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/474Crash during account creation2021-07-16T18:09:59ZPierre LespagnolCrash during account creationHappen sometimes during jams account creation, after this the client-qt fail to run with `what(): Contact out of range` exception
backtrace:
```
libcrypto.so.1.1![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libcrypto.so.1.1!...Happen sometimes during jams account creation, after this the client-qt fail to run with `what(): Contact out of range` exception
backtrace:
```
libcrypto.so.1.1![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libcrypto.so.1.1!BIO_write (Unknown Source:0)
asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::execution::any_executor<asio::execution::context_as_t<asio::execution_context&>, asio::execution::detail::blocking::never_t<0>, asio::execution::prefer_only<asio::execution::detail::blocking::possibly_t<0> >, asio::execution::prefer_only<asio::execution::detail::outstanding_work::tracked_t<0> >, asio::execution::prefer_only<asio::execution::detail::outstanding_work::untracked_t<0> >, asio::execution::prefer_only<asio::execution::detail::relationship::fork_t<0> >, asio::execution::prefer_only<asio::execution::detail::relationship::continuation_t<0> > > >, asio::ssl::detail::handshake_op, dht::http::Connection::async_handshake(std::function<void (std::error_code const&)>)::{lambda(std::error_code const&)#1}>::operator()(std::error_code, unsigned long, int) (Unknown Source:0)
void asio::detail::executor_function::complete<asio::detail::binder2<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::execution::any_executor<asio::execution::context_as_t<asio::execution_context&>, asio::execution::detail::blocking::never_t<0>, asio::execution::prefer_only<asio::execution::detail::blocking::possibly_t<0> >, asio::execution::prefer_only<asio::execution::detail::outstanding_work::tracked_t<0> >, asio::execution::prefer_only<asio::execution::detail::outstanding_work::untracked_t<0> >, asio::execution::prefer_only<asio::execution::detail::relationship::fork_t<0> >, asio::execution::prefer_only<asio::execution::detail::relationship::continuation_t<0> > > >, asio::ssl::detail::handshake_op, dht::http::Connection::async_handshake(std::function<void (std::error_code const&)>)::{lambda(std::error_code const&)#1}>, std::error_code, unsigned long>, std::allocator<void> >(asio::detail::executor_function::impl_base*, bool) (Unknown Source:0)
void asio::io_context::basic_executor_type<std::allocator<void>, 4u>::execute<asio::detail::executor_function>(asio::detail::executor_function&&) const (Unknown Source:0)
asio::detail::reactive_socket_recv_op<asio::mutable_buffers_1, asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::execution::any_executor<asio::execution::context_as_t<asio::execution_context&>, asio::execution::detail::blocking::never_t<0>, asio::execution::prefer_only<asio::execution::detail::blocking::possibly_t<0> >, asio::execution::prefer_only<asio::execution::detail::outstanding_work::tracked_t<0> >, asio::execution::prefer_only<asio::execution::detail::outstanding_work::untracked_t<0> >, asio::execution::prefer_only<asio::execution::detail::relationship::fork_t<0> >, asio::execution::prefer_only<asio::execution::detail::relationship::continuation_t<0> > > >, asio::ssl::detail::handshake_op, dht::http::Connection::async_handshake(std::function<void (std::error_code const&)>)::{lambda(std::error_code const&)#1}>, asio::execution::any_executor<asio::execution::context_as_t<asio::execution_context&>, asio::execution::detail::blocking::never_t<0>, asio::execution::prefer_only<asio::execution::detail::blocking::possibly_t<0> >, asio::execution::prefer_only<asio::execution::detail::outstanding_work::tracked_t<0> >, asio::execution::prefer_only<asio::execution::detail::outstanding_work::untracked_t<0> >, asio::execution::prefer_only<asio::execution::detail::relationship::fork_t<0> >, asio::execution::prefer_only<asio::execution::detail::relationship::continuation_t<0> > > >::do_complete(void*, asio::detail::scheduler_operation*, std::error_code const&, unsigned long) (Unknown Source:0)
asio::detail::scheduler_operation::complete(asio::detail::scheduler_operation * const this, void * owner, const asio::error_code & ec, std::size_t bytes_transferred) (/home/plespagnol/Documents/ring-project/daemon/contrib/x86_64-linux-gnu/include/asio/detail/scheduler_operation.hpp:39)
asio::detail::scheduler::do_run_one(asio::detail::scheduler * const this, asio::detail::conditionally_enabled_mutex::scoped_lock & lock, asio::detail::scheduler::thread_info & this_thread, const asio::error_code & ec) (/home/plespagnol/Documents/ring-project/daemon/contrib/x86_64-linux-gnu/include/asio/detail/impl/scheduler.ipp:480)
asio::detail::scheduler::run(asio::detail::scheduler * const this, asio::error_code & ec) (/home/plespagnol/Documents/ring-project/daemon/contrib/x86_64-linux-gnu/include/asio/detail/impl/scheduler.ipp:203)
asio::io_context::run(asio::io_context * const this) (/home/plespagnol/Documents/ring-project/daemon/contrib/x86_64-linux-gnu/include/asio/impl/io_context.ipp:62)
operator()(const struct {...} * const __closure) (/home/plespagnol/Documents/ring-project/daemon/src/manager.cpp:456)
std::__invoke_impl<void, jami::Manager::ManagerPimpl::ManagerPimpl(jami::Manager&)::<lambda()> >(std::__invoke_other, struct {...} &&)(struct {...} && __f) (/usr/include/c++/10/bits/invoke.h:60)
std::__invoke<jami::Manager::ManagerPimpl::ManagerPimpl(jami::Manager&)::<lambda()> >(struct {...} &&)(struct {...} && __fn) (/usr/include/c++/10/bits/invoke.h:95)
std::thread::_Invoker<std::tuple<jami::Manager::ManagerPimpl::ManagerPimpl(jami::Manager&)::<lambda()> > >::_M_invoke<0>(std::_Index_tuple<0>)(std::thread::_Invoker<std::tuple<jami::Manager::ManagerPimpl::ManagerPimpl(jami::Manager&)::<lambda()> > > * const this) (/usr/include/c++/10/thread:264)
std::thread::_Invoker<std::tuple<jami::Manager::ManagerPimpl::ManagerPimpl(jami::Manager&)::<lambda()> > >::operator()(void)(std::thread::_Invoker<std::tuple<jami::Manager::ManagerPimpl::ManagerPimpl(jami::Manager&)::<lambda()> > > * const this) (/usr/include/c++/10/thread:271)
std::thread::_State_impl<std::thread::_Invoker<std::tuple<jami::Manager::ManagerPimpl::ManagerPimpl(jami::Manager&)::<lambda()> > > >::_M_run(void)(std::thread::_State_impl<std::thread::_Invoker<std::tuple<jami::Manager::ManagerPimpl::ManagerPimpl(jami::Manager&)::<lambda()> > > > * const this) (/usr/include/c++/10/thread:215)
libstdc++.so.6![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libpthread.so.0!start_thread(void * arg) (pthread_create.c:463)
libc.so.6!clone() (clone.S:95)
```https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/473pulseaudio server should be allowed to autospawn when the daemon attempts to ...2021-04-08T20:42:07ZMaxim Cournoyerpulseaudio server should be allowed to autospawn when the daemon attempts to use pulseaudioThe preferred mode of operation of pulseaudio (and the one configured by default) is to autospawn the pulseaudio server on demand [0].
For some reason, the daemon disables AUTOSPAWN when attempting to connect to the pulseaudio server:
...The preferred mode of operation of pulseaudio (and the one configured by default) is to autospawn the pulseaudio server on demand [0].
For some reason, the daemon disables AUTOSPAWN when attempting to connect to the pulseaudio server:
```
if (pa_context_connect(context_, nullptr, PA_CONTEXT_NOAUTOSPAWN, nullptr) < 0)
throw std::runtime_error("Could not connect pulseaudio context to the server");
```
This causes Jami to fallback to ALSA even when the daemon was built with pulseaudio unless a pulseaudio server is already running, which degrades the audio experience (lacking echo cancellation, among other features provided by pulseaudio).
[0] https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Running/Maxim CournoyerMaxim Cournoyerhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/472UPnP - Memory leak in libupnp and libixml2021-03-19T17:44:39ZMohamed ChibaniUPnP - Memory leak in libupnp and libixmlInvestigate memory leaks reported by ASAN (address sanitizer). See the comment below for the report.
Many libupnp and libixml methods allocate memory and expect the caller to release it, which does not seem to be always done. See UpnpDo...Investigate memory leaks reported by ASAN (address sanitizer). See the comment below for the report.
Many libupnp and libixml methods allocate memory and expect the caller to release it, which does not seem to be always done. See UpnpDownloadXmlDoc for example.Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/471UPnP - Make port ranges configurable2021-12-29T19:05:09ZMohamed ChibaniUPnP - Make port ranges configurableThe port ranges (TCP and UDP) used by upnp to port mapping allocation must be configurable (currently they are hard-coded).
A new API must be added to allow a user to set the ranges for both UDP and TCP ports. If not set, default values ...The port ranges (TCP and UDP) used by upnp to port mapping allocation must be configurable (currently they are hard-coded).
A new API must be added to allow a user to set the ranges for both UDP and TCP ports. If not set, default values be used.
Might be related to https://git.jami.net/savoirfairelinux/ring-daemon/-/issues/417Backloghttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/470Deprecate redundant APIs2021-12-08T15:00:08ZMohamed ChibaniDeprecate redundant APIsDeprecate all APIs made redundant by the newly added APIs:
- placeCall
- answerCall
- ...Deprecate all APIs made redundant by the newly added APIs:
- placeCall
- answerCall
- ...Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/469Connectivity: investigate setup with guillaume2021-03-11T02:48:46ZSébastien BlinConnectivity: investigate setup with guillaume# Scenario
+ Guillaume chalet (no upnp + TURN)
+ Me (Ipv4 only, no upnp, no turn)
+ I call guillaume
=> Ice failed (after 2 secs, which should be impossible cause the ICE must wait a bit for incoming co)# Scenario
+ Guillaume chalet (no upnp + TURN)
+ Me (Ipv4 only, no upnp, no turn)
+ I call guillaume
=> Ice failed (after 2 secs, which should be impossible cause the ICE must wait a bit for incoming co)Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/466"Audio only" participants are not visible in conference2021-05-03T17:11:08ZPierre Lespagnol"Audio only" participants are not visible in conferenceThe goal is to show the "audio only" participants in the conference layout in order to show an avatar and to allow moderation control on these participants (mute, hang-up, ...).The goal is to show the "audio only" participants in the conference layout in order to show an avatar and to allow moderation control on these participants (mute, hang-up, ...).Pierre LespagnolAline Gondim SantosPierre Lespagnolhttps://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/462Support split stream design in Portaudio implementation for windows2021-03-16T19:57:30ZAndreas TraczykSupport split stream design in Portaudio implementation for windowsAndreas TraczykAndreas Traczyk