Instances of std::shared_ptr are not thread-safe, even if the control block is.
Since AVBufer already has a refcounting system, use a unique_ptr instead,
and add a mutex to protect access during copy.
In practice, the mutex should almost never block since it's locked for
the minimum scope.
Change-Id: I5122e76dadb5da6c3738f8dc711698744b52315b
pjsip scans the contact header but keep a string view of it internally instead of
copying it. Thus, duplicate the contact header and bind its lifetime to the
pool allocator of the tdata structure.
Gitlab: #668
Change-Id: Ief31fcc6033b394dcb43ee0403f9459654d29f1f
callbacks from OnChangeCallback are called during account's
initialization. This will triggers signals that the client will
already retrieve via dedicated methods and those signals are emitted
when the account is not usable (accountManager or id_ not initialized).
Change-Id: I8d16c077bbf8b827c91be9047b202cd5e859167a
This patch fixes several behaviours:
+ Banning a member now stores the previous state of the member
+ This allow to store empty .crt files for invited
+ Unbanning a member is now possible for an admin
+ This re-add the member in its previous state
https://git.jami.net/savoirfairelinux/jami-product-backlog/-/issues/51
Change-Id: I34d5913c023043e07544f1b8bb6211aea5db0065
Now that every client uses either
FrameBuffer::avframe with SinkTarget,
or VideoFrame with AVSinkTarget,
we can remove the obsolete fields in FrameBuffer
and make it a simple typedef.
Change-Id: Icf88f3d7df4f04f5cfb389f83e67aec94c17b5dc
Previously, AllocConsole was called from the client. This has been
moved into the ConsoleLog class. When calling Logger::setConsoleLog
an attempt to attach to the console of the parent process will be
made first. This will be the case when Jami is being run from a
command line with the debug option. Otherwise, the logger will use
AllocConsole to instantiate a console window for the logs. The
latter will have it's lifetime bound by Jami.
Change-Id: I7f1728626962a2f702ad564bb16deadc2d92dfb7
While in a conference, the video split added a transfer to
main memory for each of the participants. This makes the sinkClient
a observable and the participants sinks are attached to the main
conference sink. The main sink has its frame transferred and the
subsequent observers do not need to repeat the process.
GitLab: #709
Change-Id: I1f4ea9460c052a100b4809101c35d196cd79acbe
This warning is caused by ASIO, is harmless, and likely won't be fixed for a while.
Mute it for now.
Change-Id: Ib387aec8138ebed9dc45449ffd19d8ad340044c6
The agent and unit tests can now be compiled without requiring
`--disable-shared' at configuration time.
The agent requires the logger functions to have default visibility instead of
hidden. Thus, `jami::logger::[v]log' can be considered part of the public API.
The unit tests however require hidden symbols. Thus, we link the tests against
a static version of libjami instead.
Change-Id: I59d9e67679766e0310a19f9a879c06a31c5124c4
Mute/un-mute audio is done only locally, i.e. without requesting
a media change (re-invite) as done for the video, thus the media
direction in the SDP must not change for the audio stream.
Gitlab: #688
Change-Id: I3775a29f6c566a159d5b9269b4d9462ab4e3c36f
Before this change, the default ringtone path would be for example set
to "/data/data/cx.ring/files/ringtones/default.opus" on Android;
migrating the account to GNU/Linux would cause the ringtone to not be
found. The change leverages existing code that searches for a base
file name in a JAMI_DATADIR-prefixed location.
* globals.mk: Set JAMI_DATADIR from the environment if it's defined.
* src/account.cpp (DEFAULT_RINGTONE_PATH): Universally set to
"default.opus";
* src/manager.cpp: Add a definition check for the JAMI_DATADIR macro.
(Manager::playRingtone): Go through the ringtone path resolution
scheme on all platforms. Some platforms will need to define the
JAMI_DATADIR macro correctly for this to work; for example the
libjami build on Android should have the JAMI_DATADIR macro set to
"/data/data/cx.ring/files" for this to work correctly.
Accompanying client-android change:
https://review.jami.net/c/jami-client-android/+/21148
Co-authored-by: Amin Bandali <amin.bandali@savoirfairelinux.com>
Change-Id: Ia408a8db263af91c2734f61aa38c4ed717605359
membersUris() didn't remove banned members from the list by default,
causing the daemon to send messages to banned members.
Change-Id: I84a80476d36d27ec33379b6e8be38f317322ec3b
GitLab: #298
This patch fix video device detection. Before device event listeners
would not start if a video device list is empty.
Change-Id: I5b320c1ae47b945d6f570e3cd2afcd6bd01dfdae
In some cases, a user in the swarm can update its certificates.
However, the new certificate MUST be checked and MUST be signed
by the account.
So, this patch validates two scenarios:
+ Check that a fetch error is sent to the client whenever an invalid
certificate is detected in the original clone
+ Check that a fetch error is sent to the client whenever a
certificate is replaced during the conversation.
Change-Id: Ieb15fb6444dcf4541f00c511a9f4ba0c64617130
If a device expires, a migration will regenerate the device's
certificate. In this case, the device certificate in swarms must
be updated.
So, the idea of this patch is to verify that the current certificate
in the repository for this device is still correct. If the device or
the member got invalidated, it tries to replace the current certificate
(updated via the migration). So that the new commits will still be valid.
Change-Id: I75b19b0edbb5601a758a73a4c4a44678d77295e1
GitLab: #684
The hash changed because the libressl team updated their tool,
changing the copyright in the tarball
Change-Id: I0fcf3d65d5058a5fdfdc161aa427758ca20e9a2f
On older versions, removeConversation didn't update appdata/contacts
causing some removed conversations to be announced in contacts details.
On Android, this hide the contact from the smartlist, as it's waiting
for a removed conversation.
Change-Id: I05be12ffcd2e5fe38d84c6f972b97e082c612ac7
GitLab: #714
When a device is expired, the migration will update the certificate
chain with the previous key. So, after a migration, the device's id
must be unchanged.
However, if a device is revoked, this should trigger a re-generation
of the device with a new PrivateKey (so generates a new device).
Add related unit tests.
GitLab: #684 (this is some preparative work)
Change-Id: I7ff0cff97b7285186539cfadc6e33b620ded5b27