Commit Graph

15413 Commits

Author SHA1 Message Date
cc8fb02462 x11: window sharing
+ If in screen sharing, the hardware acceleration encoding is disabled

GitLab: https://git.jami.net/savoirfairelinux/jami-project/-/issues/1294

Change-Id: I24982b4454d724bb86059a50a3c2d01fe6fab147
2021-11-30 12:08:50 -05:00
35e4cfce40 multiplexed_socket: fix race condition on acceptation
Because some callbacks can take a long time (accepting a SIP channel
will starts to sync profiles, ask for new channel, etc), control packets
are handled in their own thread. However, if the peer accepts a request,
it can starts to use it and send data on it. When finished, it will close
the socket and both peer will remove the channel.
In some case, the channel can be removed before
MultiplexedSocket::Impl::onAccept, causing upper layers to handle a
bad channel. In this patch, we removes the channel only when upper layers
know that the channel is accepted and ready to use. Also, onAccept()
doesn't create wrong channels (which was a bug, where isInitiator() was
in the wrong state).

GitLab: #659
Change-Id: I4f45feacc2624ce0135ace09f7e0188b56fcf81f
2021-11-29 09:57:52 -05:00
81d75c92d5 jamiaccount: protect module's initialization
Else, the module can be created twice and one will be invalidated
causing some crashes

Change-Id: I1403fc27e3baa24c1ad6e4c8ae5a352e328374ee
2021-11-25 15:29:19 -05:00
c6661d1857 swarm: fix racecondition with acceptTrustRequest
AcceptTrustRequest should update conversation's module to directly
return the syncing conversation. Moreover, configurationMutex_ should
be recursive to allow sync between trust and conversation's requests.

This fix ut_conversationRequest where the problem was that the
conversation's requests were updated after ContactAdded, causing
removeContact() to remove the conversation, but acceptTrustRequest
re-adds it during the operation.

Change-Id: If676dc58290f87c289a6e63eb9afa04d2cc25df5
GitLab: #659
2021-11-25 15:29:19 -05:00
82707afc80 conference - add support to change media attributes of the host
Gitlab: #638

Change-Id: I3c656bccc13c595bc44023d3642f820ab580961b
2021-11-24 14:57:58 -05:00
c5608b933a videomanager: add deviceId to RequestKeyFrame
Change-Id: Ie8cdb2a771a64dbdb9384fbbfadb255bec64d9c6
2021-11-23 12:08:55 -05:00
f3af8193ea update metainfo
Change-Id: Ibb5b615d613cb1f1edf2c0ddaec6caba2d22c5ab
2021-11-23 10:23:37 -05:00
df9dba9bba multi-stream - remove legacy code
Remove obsolete code kept for backward compatibility.
Add call transfer test case

Gitlab: #470

Change-Id: I81472b8308ec402911670e8658308a184b97206c
2021-11-22 15:37:14 -05:00
db0726465c player: fix close player signature
Change-Id: I9f435dc52218222ccbfae1fb507f13a8cb71f6f7
2021-11-22 13:49:03 -05:00
71b4d7a396 swarm: various fixes
This patch fixes current unitTest
+ Fix testCreateConversationWithMessagesThenAddDevice messageReceived
flag
+ Remove useless sleep in tests
+ in ut_conversation fix messageReceived flag
+ lock convInfo and convRequests to avoid invalid write operations
+ fix pending callbacks if connected via a DHT request
+ remove useless log

Change-Id: If53ecf0c064e9c1424c11a4af1e13d31294e6be9
2021-11-22 13:26:34 -05:00
8448d70c5d SIP - set peer's 'Allow' methods if present in header
SIP specification does not mandate the use of 'Allow'
header and which message must contain this header.
So, the 'Allow' header may be present in some SIP
messages (e.g. INVITE) but not in subsequent messages
(e.g. ACK), thus the current list of methods (if any)
will be updated only if the new list is not empty.

Gitlab: #572

Change-Id: If10c73dd116ebd2bbcec413d377caf524aca8897
2021-11-22 12:28:02 -05:00
709d51f485 ice_transport: Replace assertion for conditional
Change-Id: Ieb12a81646de61bce2cbb1e369e1c8a82ea118da
2021-11-22 09:37:53 -05:00
caad9b34c9 tests: fix ut_conference
The conference should be used in the tests after the first
conferenceChanged, to be sure that every calls are binded to the
conference.
Then, before adding a call to the conference, it should be CURRENT
from the host perspective, not the receiver. So, add "hostState"
to store the state of the call from the host perspective.

Change-Id: I9d27b4c0461ede05d27ea849de08c22e9fc3b249
2021-11-19 14:01:35 -05:00
5e6b8823fb agent/bindings: Bump bindings to new API for calls, conferences
Change-Id: I759ebe5f1827c27468f0d60e91098c70257c7b30
2021-11-19 10:55:15 -05:00
24d9284dd5 SIP MESSAGE - check UA allowed methods
SIP MESSAGE method is an extention to SIP methods and might not be
supported by all User Agents (UA).
In this change, the MESSAGE method is only used if it's present in
the list of allowed methods (Allow header).
Since the Allow header is not mandatory, if the Allow header is not
present we assume that the MESSAGE method is not supported.

Gitlab: #572

Change-Id: I85d35fa0f9be108b34a538b8c732f1530ad68bd6
2021-11-18 14:34:39 -05:00
eacbec668d videomanager api: add deviceId to stopCapture
Change-Id: Ie1b88abf5790e2f17251e2c34ed229e34cdc496c
2021-11-18 12:22:37 -05:00
f4a57d918d ice transport - fix illegal memory access
Set vector size of remote addresses to component count
when initializing the ICE instance.

Gitlab: #573

Change-Id: Iff02142dfb36326e6baa239900ced9452ab3bb8e
2021-11-18 10:49:24 -05:00
9e3d8ac70e callmanager: fix signature for dbus
Change-Id: Id2e2a1f79be9ee21c127b3b77fb189af78517138
2021-11-17 16:23:37 -05:00
01cb294c44 callmanager: add accountId to identify calls, conferences
This starts the work to move calls and conference per account,
cleaning up the API and start future re-factorization.

Change-Id: I2a3a2c77e9ba78b1a280bdf8dca7eeaabb72f3fd
2021-11-16 15:59:41 -05:00
517f6299e4 api: replace {start/stop}Camera, switchInput with {open/close}VideoInput
Gitlab: #594
Change-Id: Ie9ed60ed9e1ec6f1d7344b2c79544b9cd6f22a91
2021-11-16 14:20:23 -05:00
0d1a7ab224 ice transport: avoid deadlock in send callback
deadlock could happen with:
* handleEvents -> pj_lock -> on_data_sent -> iceMutex_
* send() -> iceMutex_ -> pj_ice_strans_sendto2 -> pj_lock

This was fixed by:
* Not setting on_data_sent callback for UDP
* Using a different mutex than iceMutex_ to wait for data send

Change-Id: Ic50698ac9dfe37574f145baa718fff8b74cc99be
2021-11-16 14:20:23 -05:00
39a27cd0fd contact_list: removeContact should always remove the trust request
The is no reason to keep the trust request after a removeContact.

Change-Id: I1aad35e7ad6ef92cbd13fdf65283c647a8673e94
2021-11-16 14:19:48 -05:00
6daf7bed0a manager: call processRemaining on hangupConference
hangupCall already call exitConference

Change-Id: I0666525045101974056ccea6fb07963caf04c6db
2021-11-16 13:35:00 -05:00
50a7e128f8 ice transport - fix illegal memory access
Check the size of the vector holding the default remote addresses
before using it.

Gitlab: #573

Change-Id: I21fcd7aae97a4ac2c28cc1cf64cbdde0bf73ff8c
2021-11-16 13:28:29 -05:00
ac2df2d6f4 contrib: update asio to 1.19.2
Change-Id: I4f892022de8ae0ddc70c08c6b9849aeb62aa7b58
2021-11-16 13:22:25 -05:00
65263b21d5 contrib: update libressl to 3.4.0
Change-Id: Ie5d96f1883759bc8a5951d13541b2e3b541b1a95
2021-11-16 13:22:25 -05:00
d4f010fd9d misc: remove unreachable methods
Change-Id: I4428223cad59fc3fcdd3e854d821420b7d110142
2021-11-16 12:27:55 -05:00
f8830b7894 conversation_module: update pending fetch on errors
Note: also cleanup warning for conversationRequest and fix test

Change-Id: I4b14dd5983bdde2d479093a33ee3d6343fa8ed87
GitLab: #659
2021-11-15 14:34:12 -05:00
41a7ef1970 conference: fix crashes on leave
This patch fix several problems:
+ participants_ must be protected and not iterated while accessed
+ getVideoMixer() do not generate a video mixer, this is only
managed at one place.
+ Remove setConfId, enter/exitConf are here for this and this
is causing the videoMixer to not be destroyed in time, because
exitConference() was called after setConfId(""). This was causing
crashes because the videoMixer will update for the last participant
with the error: "The call is not bound to any conference"

GitLab: #660
Change-Id: Ic60bc7377b0315f7e2906ab03a7653381436180c
2021-11-15 11:55:17 -05:00
390601fd32 jamiaccount: sendTextMessage should support swarm: uris
For sharing location android uses sendTextMessage("swarm:xxx", payloads)
In this case, sendInstantMessage should be used, like composing status
or read.
sendInstantMessage will iterate over the members of the swarm and
send the message.

https://git.jami.net/savoirfairelinux/jami-client-android/-/issues/1024

Change-Id: Ia825ae6a32715e865fa952cfa850550723c9222d
2021-11-15 10:17:56 -05:00
7d1c3d662a meson: declare using of objective-c++ compiler on osx and ios
Change-Id: Iec6822356d65d1df2fd057920fc30ae56581d76e
2021-11-14 11:53:24 -05:00
6bb307bda4 meson: update the list of sources and dependencies
Change-Id: I6b419ff3e1bc4f8dd8958974e4ae4bc98d30cf06
2021-11-13 16:11:02 -05:00
e89bf17249 conversation_module: fix removeContact with self
removeContact("SELF") MUST NOT remove all swarm.

Change-Id: I421a235fd2beb2fc33276fd58aa1413454b40233
GitLab: #665
2021-11-12 14:51:27 -05:00
94882a0abc contact_list: erase trust request via sync
If a contact is added, the first device will erase the trust request,
but the second device will update the contact but not the trust
request. Causing, the removeContact to generate a new request for
the previously created conversation.

Change-Id: I2f0a48b3c6b6b18ed6218e7a08c61de2beb08d3d
GitLab: #664
2021-11-12 13:32:58 -05:00
00ee216446 manager: emit conferenceCreated before renderer signal
This allow clients to check if it's necessary to register to the
sinkClient.

GitLab: #568
Change-Id: I59ad16539b3954b592fe1aeeb83bfd2c9f30a491
2021-11-12 13:32:58 -05:00
d66edafb7d agent/agent: Use parameter instead of fluid
Change-Id: I365b4346d123b0cc8c71a17e62e25bae37e5fc49
2021-11-12 11:20:19 -05:00
562f8c8a56 agent/examples: Fix examples
Change-Id: Idf54e78391eb77c7964c6650b6f70df71b8eac3a
2021-11-12 11:19:23 -05:00
914a8ec516 agent/peer-monitor: Fix typo and add pause in sighandler
Change-Id: I298a8bdca4a9263a5afa332b8501b1fefc3929de
2021-11-12 09:42:17 -05:00
8549636837 data_transfer: fix inverted condition
it's swarm if interactionId != ""

Change-Id: I5345eaeb60b71a45136a560507dd87a92049f043
2021-11-11 16:47:32 -05:00
e40faa6961 coverage: ignore autogenerated files (bin/dbus/*)
Change-Id: Ied4f74e51c7c0f7e97c66ef04e51f2efe521acd7
2021-11-10 17:15:54 -05:00
6ba2ce016a build: disable SHM if DBUS is not used
As libwrap is used by default, HAVE_SHM should only be true
if directrenderer is not used to avoid useless work

Change-Id: I9f819a7c06c667ccf08066f70104dcd3667f8546
2021-11-09 12:34:34 -05:00
1c1a7f8487 screensharing: add framerate preference
GitLab: client-qt#514
Change-Id: Iaad758cd52dd0837b00ca520aa4da87929215fcb
2021-11-08 13:17:19 -05:00
90005c437d conversation_module: sync with other accounts
Change-Id: I3959292bd6cc06d579e5aa9ce4aa04ab68a39b4d
2021-11-08 13:04:09 -05:00
d5935ede87 test: ignore bin/ for coverage
Change-Id: Ifd27498304158b51f6547eeb4bd316af61cbfd6d
2021-11-08 11:32:49 -05:00
f4a6985eb8 namedirectory: don't return name as address
Change-Id: I0a4528115568be718a008111f3006c686b83e2c8
2021-11-05 16:49:21 -04:00
b370ada711 multi-stream: handle media change request in conference
Handle media change request in conference, specifically when adding
video to a an audio only call.

Gitlab: #638

Change-Id: I0eb892eb941d2a62b6046c7b2ac9d128f4bcbd12
2021-11-05 13:15:37 -04:00
c28f0af5bc conversation: use getMemberUris
Change-Id: I5c8d744ddf8ef0a424efe305deade4fdc73e7aa4
2021-11-04 14:19:22 -04:00
ea94a55078 swarm: update convInfos on sync
Also detects incorrect conv infos and fix it.

Change-Id: Idef35e0f15da97b8d91523a6e963b2d6384d7c5a
2021-11-04 14:19:22 -04:00
dd5e65098b Hold/Resume: fix media direction and add unit test
When a call is held, the media direction in the SDP
for an active media must be set to sendonly.
Also add unit test for simple hold/resume operations

Gitlab: #644

Change-Id: Ib41434c55f9be1a6d34a7d51c9127af89081c8e8
2021-11-03 12:26:07 -04:00
c7a48b2421 agent/scenarios: Add peer-monitor scenario
Change-Id: Idba6d4b23add47382d64afd06808ccce61b90bc8
2021-11-01 17:32:13 -04:00