Commit Graph

15532 Commits

Author SHA1 Message Date
e7243cecfe data_transfer: receive incoming profiles in dedicated directory
this avoid to create a dirty cache

Change-Id: Icde80be0fe241774a1e21eea4558ba76f2559f9f
2022-06-17 10:07:43 -04:00
35d201ee26 contrib: update asio
Change-Id: I2cc327e11c80eeae7ca07bd1e1ab33fc357d527f
2022-06-16 15:07:07 -04:00
c0d9e6057c contrib: fix dbus build with g++12
Change-Id: I52d4fee70c9fdcc38c964301d56f89fa23188e9a
GitLab: #734
2022-06-16 10:01:12 -04:00
37d1d9a5e3 connectionmanager: erase info on connection failure
In some cases, the infos were not correctly refreshed, causing some
pending callbacks to never be called.
Also, split getInfo() in two methods to improve readability.

Change-Id: I1b60f2cf2ac5bf97c9a44a53794b56906d314e6a
GitLab: #TODO
2022-06-15 15:29:29 -04:00
7752d3a96e ice_transport: Nuke iceMutex_
iceMutex_ was used before because icest_ could change asynchronously.  This is
not the case anymore, since icest_ is initialized synchronously by
IceTransport::initIceInstance().

Furthermore, signaling of the iceCV_ condition variable is now done under the
group lock of the ICE transport, since it's under this lock that the state of
the session is changed.

Change-Id: I3f2b4b4141777b950c916553b45da880dd7056b6
2022-06-15 15:29:23 -04:00
58d42df82d tracepoint: Add scheduled executor tracepoints
The two tracepoints are used to delimit the beginning and the end of the
execution of a task by a scheduler.  The beginning tracepoint contains all the
meta information related to the the execution context of the task and an unique
cookie.  This cookie is then reused in the end tracepoint to match the pair of
begin/end without duplication of information.

Change-Id: Ibbf64fe49325e7cb72c60aa6c9d8d8d1ab074f2a
2022-06-14 16:11:51 -04:00
cbbf93ad27 swarm: fix merge commit's validation after migration
Merge's commits were'nt checked, while comitting and while pulling.
This means that the author could be incorrect. Add a check before
doing a merge commit and when validating it.
This avoid incorrect repository in case a merge commit is generated
after a migration.

Misc: fix incorrect test

GitLab: #738

Change-Id: Id9748eb7d3dd5db023dd2ab4a30261c31af5d514
2022-06-14 10:59:36 -04:00
7b485429d8 rtp: cleanup storing bitrate info
Change-Id: Ibfc4d65be3969832ba1ea84106d55c29d22e9dcd
2022-06-09 16:55:12 -04:00
4ff4a32d66 config: handle multiple exception types when deserializing nodes
Any exception other than YAML::Exception was not caught when
loading the account map. We should catch other types of exceptions
as well to prevent a malformed YAML config from preventing daemon
initialization.

Change-Id: If7491fbe97eb8f988edce334a20ddc14e0a0a5fd
Gitlab: #735
2022-05-27 14:41:05 -04:00
fc6f643474 SinkClient: use steady_clock for FPS calculation
Change-Id: Ic14fe56d0223433782d06a97904024b56c9ab732
2022-05-23 11:31:57 -04:00
b1ec634e94 SinkClient: allow child sinks to observe a parent sink with no client, cleanup
Without this patch, clients need to observe the main mixer sink to be
able to observe individual participants.

GitLab: https://git.jami.net/savoirfairelinux/jami-client-android/-/issues/1100
Change-Id: I97c4b8d3d40049a81c94b13d9c96776c4030ab2f
2022-05-23 11:31:47 -04:00
ebb00d83d0 SinkClient: don't resize to 0 when changing size
Change-Id: Ib5c1fd00793fa75312ec6c573805a3746fd29a22
2022-05-23 11:31:47 -04:00
e8b9309c5d tracepoint: Add LTTng tracepoint generation
Change-Id: I6358f3ab5f464f1a553814c58b22245ef64f0b52
2022-05-23 11:27:29 -04:00
983ae44f9e misc: replace rw_mutex with std::shared_mutex
Change-Id: I6919ab404e5d8f149950d9d3a624a85115b62944
2022-05-23 02:42:28 -04:00
b0cfb1e8dd configure.ac: Emit ENABLE_TRACEPOINTS in config.h
Change-Id: I988bc6600228168d13cd9121bff739d4b0add1ec
2022-05-20 16:32:31 -04:00
22b7425ad0 trace-tools: Add trace-tools.h
Change-Id: I091f3e3580fa6761fef8fff32377f6a305ca99e1
2022-05-20 14:29:29 -04:00
2e8b701f0b configure.ac: Add check of cxxabi.h
Change-Id: Ifa8984d43ef51bf0c3432e6f8643107b60d7d372
2022-05-20 14:29:08 -04:00
57a6344727 contrib: Add liburcu 0.13.1
Change-Id: I26379859f39b05a8cd2a8c4b05d6173cea145481
2022-05-20 11:15:12 -04:00
2b2899d7b8 contrib: Add lttng-ust 2.13.0
Change-Id: Ie6d9c48758adbee7c81bf31c3e11ada2428c2e8d
2022-05-20 11:15:12 -04:00
67fa5a3437 configure.ac: Add LTTng tracepoints feature
Change-Id: I192ff24448a6454c8d504febd7ab2df2ccf88272
2022-05-20 11:15:10 -04:00
95ec084263 pjproject: fix crash if all ipv6 addresses are deprecated
cleanup old TODO file

Change-Id: I76a91664f9e40cc866ae2527758815f11d312d69
GitLab: #733
2022-05-20 05:05:00 -04:00
6bb0b6e2d7 extras/tools: update cmake version to 3.22.1
Change-Id: Ibad39331c7fa31e3b8ddc31dd61e3a3bc66fc9f8
2022-05-17 11:55:20 -04:00
fbdc6a1957 video receive thread: fix race condition on displayMatrix_
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
2022-05-13 02:30:35 -04:00
35a0fcdeb8 Video receiver: reduce data race
- do not destroy demux context on receiver thread

Gitlab: #732

Change-Id: I34e9922305073a606467d178f13606eb1d721d2f
2022-05-11 10:35:48 -04:00
657c47c51d video API: return bool from registerSinkTarget
This allows clients to know if sink registration succeeded.

Change-Id: Ic22d4a50b9cf3c071562c6425724008a54e5f3a6
2022-05-09 10:48:16 -04:00
8750049b0c nodejs: fix binding, update to Node 16 LTS
Change-Id: Id4eaaebee19c9739334b0652e7cdf560d8f8a202
2022-04-27 11:49:19 -04:00
222934d9ee contrib: update opendht
Change-Id: I47603f564cfa57ae63f758534231b1755b4f1286
2022-04-26 13:38:04 -04:00
82fb339119 sip/sip_utils: Duplicate contact header
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
2022-04-26 10:54:35 -04:00
5856cf5a8f plugins: add support to preferences per account
bump Plugin api version
bump Jami version

GitLab: #631
Change-Id: I8b8a9bbb05b3dd461bfafc02940441fda92b25c4
2022-04-25 13:19:53 -04:00
91778a298b jamiaccount: do not emit signals during authentification
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
2022-04-15 16:05:38 -04:00
a6e0119ce7 conference: remove dummy participant if audio only
With video split we don't need dummy rtp session.

GitLab: #729
Change-Id: Ibf6bb303d1860a80549f6cfb2a06e36e51f48b70
2022-04-07 08:30:37 -04:00
dca2eaaa4b contrib: bump opendht to 2.4.0
GitLab: #717
Change-Id: I89009c3d4402b8d04af3586c0360b9bf549b7a11
2022-03-23 15:48:20 -04:00
b499034ba4 swarm: improve vote system and supports unban
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
2022-03-23 12:30:14 -04:00
4af0279fa2 video API: unify SinkTarget and AVSinkTarget
Change-Id: I6cbbdc1ec6953c1c9ec47a57acf8ac4d8995468d
2022-03-21 16:56:54 -04:00
24dd4150c8 video API: remove legacy FrameBuffer fields
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
2022-03-21 16:51:06 -04:00
ab3e52316c conversation_module: return swarm's profile to the client for requests
Conversation's requests also have metadata attached which clients
must be able to access.

https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/670

Change-Id: If02fffb5646074e993c090846ff998e83ab79d78
2022-03-21 14:18:34 -04:00
4b2cc45f96 conversation: pinCertificates must be blocking before reload
In the current code, if pinCertificate is too slow, the following
getCertificate will fail.

https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/340

Change-Id: I0813b5984b4a6952373c7bd0fad3748950139784
2022-03-21 14:18:34 -04:00
0c98f2b1ff sipcall: do not use invalid pointer on videoRtp
Change-Id: Iccd5fa02855fb8dc33529177e2fb14d7588add44
2022-03-19 18:46:10 -04:00
0c57cee538 logger: add console logging code for Windows
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
2022-03-17 16:20:17 -04:00
f6f8a83754 conference: make single transfer to main memory
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
2022-03-17 13:27:45 -05:00
4b5595c398 media: adjust to ffmpeg 5 API changes
Change-Id: I5c5b9935e7ed3a15029d5aa62e0266c77e59f652
2022-03-15 14:36:03 -04:00
2b45e58237 video: prevent exception on macOS
Prevent exception when getting supported frame rates.

Change-Id: I2fe140bb51e0f20510b1c3f6a62df8921030dc7d
2022-03-09 17:32:51 -05:00
5a83c7a260 build: update opendht
Change-Id: Ia26c97dbe487509d3e346d7c95675bd984d2ab77
2022-03-04 12:31:16 -05:00
4f426634a3 build: hide verbose warning
This warning is caused by ASIO, is harmless, and likely won't be fixed for a while.
Mute it for now.

Change-Id: Ib387aec8138ebed9dc45449ffd19d8ad340044c6
2022-03-04 12:31:01 -05:00
f26f20d567 video interface: homogenize decoding signal names
Change-Id: Ica925c83e44e2326417708768566e33102365ce9
2022-03-03 17:35:14 -05:00
775aa2f803 Build system: No '--disable-shared'
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
2022-03-03 17:10:21 -05:00
c3d0e5ebee Mute audio: do not change media direction
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
2022-02-28 09:55:54 -05:00
0f0bb5d89f globals.mk: Remove dead code.
astyle was removed in favor of clang-format in commit
85510893d5.

* globals.mk (ASTYLERC, indent): Delete variables.
(indent): Delete target.

Change-Id: I138f887a5845ff24e12c5c8ece26e30d4cfc7616
2022-02-25 15:20:00 -05:00
3377a4581e manager: Rename the 'ringchoice' local variable to 'ringtone'.
* src/manager.cpp (Manager::playRingtone)<ringchoice>: Rename local
variable to...
<ringtone> ... this.

Change-Id: Ia94ead6dfa070a5c18d3e267e00d8895f38e5b09
2022-02-25 09:28:17 -05:00
e23a88672d account: Make the default ringtone path portable.
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
2022-02-25 09:15:40 -05:00