1
0
Fork 0
mirror of https://gitlab.gnome.org/GNOME/calls.git synced 2024-11-15 04:45:36 +00:00
Commit graph

299 commits

Author SHA1 Message Date
Evangelos Ribeiro Tzaras
4188af73af sip: origin: Drop comparison that always evaluates as true
This avoids the following warning:

../plugins/sip/calls-sip-origin.c: In function ‘sip_r_register’:
../plugins/sip/calls-sip-origin.c:483:26: warning: the comparison will always evaluate as ‘true’ for the address of ‘m_url’ will never be NULL [-Waddress]
  483 |     if (sip->sip_contact && sip->sip_contact->m_url && sip->sip_contact->m_url->url_host) {
      |                          ^~
In file included from /usr/include/sofia-sip-1.12/sofia-sip/nua.h:47,
                 from ../plugins/sip/calls-sip-util.h:28,
                 from ../plugins/sip/calls-sip-call.h:30,
                 from ../plugins/sip/calls-sip-origin.c:31:
/usr/include/sofia-sip-1.12/sofia-sip/sip.h:477:23: note: ‘m_url’ declared here
  477 |   url_t               m_url[1];     /**< SIP URL */
      |                       ^~~~~
../plugins/sip/calls-sip-origin.c: In function ‘sip_callback’:
../plugins/sip/calls-sip-origin.c:779:23: warning: the comparison will always evaluate as ‘true’ for the address of ‘a_url’ will never be NULL [-Waddress]
  779 |     if (sip->sip_from && sip->sip_from->a_url &&
      |                       ^~
/usr/include/sofia-sip-1.12/sofia-sip/sip.h:386:22: note: ‘a_url’ declared here
  386 |   url_t              a_url[1];      /**< URL */
      |                      ^~~~~
2022-07-27 16:06:57 +02:00
Evangelos Ribeiro Tzaras
7094363894 sip: origin: Reduce logspam from REGISTER keep-alives 2022-06-20 13:00:37 +00:00
Evangelos Ribeiro Tzaras
bf8bc5db3c sip: origin: Only set own IP if it has changed
This helps to reduce some logspam.
2022-06-20 13:00:37 +00:00
Evangelos Ribeiro Tzaras
2c7569c608 sip: origin: Don't fetch the contact header repeatedly
This somewhat reduces the logspam:
response to get_params: 200 OK

origin->contact_header
2022-06-20 13:00:37 +00:00
Evangelos Ribeiro Tzaras
6d7feec690 mm: call: Better debugging
Including the error domain should help in identifying errors.
Use the DBus object path as the primary identifier for a call.
2022-06-20 13:00:37 +00:00
Evangelos Ribeiro Tzaras
07aa990601 mm: call: Use correct enum type
They both have the same value (=0), and things worked because of
implicit conversion, but was still confusing and technically wrong.
2022-06-20 13:00:37 +00:00
Evangelos Ribeiro Tzaras
01b214c5fb sip: origin: Don't mix code and declarations
Move (and reorder) declarations to avoid warnings triggered by
-Wdeclaration-after-statement

Closes #459
2022-06-14 17:48:43 +00:00
Evangelos Ribeiro Tzaras
7847c72560 sip: origin: Codestyle 2022-06-14 17:48:43 +00:00
eladyn
fec3451cd0 sip: origin: Honor preferred codecs for incoming calls
This enables proper negotiation of the codec when answering calls, which
previously also responded with codecs that were not part of the users
preferred ones.

Fixes: #413
2022-06-02 09:07:01 +00:00
Yuri Chornoivan
a98cd6a802 Fix minor typo 2022-05-31 07:47:45 +00:00
Evangelos Ribeiro Tzaras
50e7c87a4d sip: Store media encryption account preference to disk 2022-05-24 22:48:59 +02:00
Evangelos Ribeiro Tzaras
aeae044534 sip: account-widget: Add media encryption option
This option can only be set when the transport protocol is set to TLS or
the "always-allow-sdes" gsetting is used.
2022-05-24 22:48:59 +02:00
Evangelos Ribeiro Tzaras
e75e04fb4e sip: Allow specifying if media encryption is desired
A property of type SipMediaEncryption is added to both the origin and
the call which allows to state if we want the media session to be
encrypted with SRTP.

Logic is added to interact with the CallsSdpCryptoContext if encryption
is desired.
2022-05-24 22:48:56 +02:00
Evangelos Ribeiro Tzaras
0e57d31c1e sip: media-manager: Include crypto attributes for capabilities
The API is changed to accept a list of calls_srtp_crypto_attributes
which get inserted into the SDP line.
2022-05-24 22:30:03 +02:00
Evangelos Ribeiro Tzaras
14350a38ed sip: Add SDP crypto context class
Objects of this type keep track of SDP of the local and remote peers,
allow generating offers and answers and codify default policy used for
cryptographic parameters.
2022-05-24 22:30:03 +02:00
Evangelos Ribeiro Tzaras
a14b6bfbf5 sip: media-pipeline: Uncrustify struct members 2022-05-24 22:30:03 +02:00
Evangelos Ribeiro Tzaras
ea5b4f2895 sip: media-pipeline: Use cryptographic parameters
Allows setting up cryptographic parameters with
calls_sip_media_pipeline_set_crypto() and use them to set GstCaps for
GstSrtpDec and GObject properties for GstSrtpEnc
2022-05-24 22:30:03 +02:00
Evangelos Ribeiro Tzaras
4937723541 sip: Add srtp-utilities
These utilities aid in generating and parsing SDP crypto attributes to be used
during the offer/answer negotiation.
2022-05-24 22:30:03 +02:00
Evangelos Ribeiro Tzaras
cfd0dc6e08 sip: account-widget: Warn when trying to find unknown protocol
A warning is more suitable than a simple debug message as this would be
considered a programming error.
2022-05-24 22:30:03 +02:00
Evangelos Ribeiro Tzaras
ef56c8f51c sip: account-widget: Include option for automatically connecting
Fixes #438
2022-05-24 11:55:52 +00:00
Evangelos Ribeiro Tzaras
47d252eb8b sip-origin: Notify on account property updates
The UI does not have a chance to react otherwise.
2022-05-24 11:55:52 +00:00
Evangelos Ribeiro Tzaras
4714aea068 sip: origin: Don't treat DNS failures as errors
No need to g_warning() for this.
2022-05-24 11:55:52 +00:00
Evangelos Ribeiro Tzaras
46ff807f6b sip: origin: Always notify state changes when relevant to the UI
by adding functions to the public API which determine if state changes
should be shown to the user and use them (instead of duplicating similar
logic).
2022-05-24 11:55:52 +00:00
Evangelos Ribeiro Tzaras
0605582fc7 sip: origin: Notify on state change
The account state has G_EXPLICIT_NOTIFY but we did never notified.
2022-05-24 11:55:52 +00:00
Evangelos Ribeiro Tzaras
59c06aef44 sip: origin: Tweak debugging
Be slightly more verbose in messages.
Demote some warnings.
Don't print empty tags.
2022-05-24 11:55:52 +00:00
Evangelos Ribeiro Tzaras
b31db4a51c sip-origin: Codestyle 2022-05-24 11:55:52 +00:00
Evangelos Ribeiro Tzaras
94fa13af4c settings: Convert to the singleton pattern
We only have a single source of settings, so we should reflect that by
using a singleton. This also reduces our LoC.

This doesn't impair our ability to run tests because there we run with
GSETTINGS_BACKEND=memory
2022-05-13 19:58:07 +02:00
Evangelos Ribeiro Tzaras
d28be2650b Fix header alignment
Uncrustify messed up a bit because of the it expects a semicolon for the
G_* () macros

See https://github.com/uncrustify/uncrustify/issues/3393
2022-05-13 19:58:07 +02:00
Evangelos Ribeiro Tzaras
96f1cc0a30 sip: call: Defer setting up codecs for pipeline until activated
This let's us get rid of some ugly code
2022-05-09 11:13:15 +02:00
Evangelos Ribeiro Tzaras
c6c17671e1 sip: origin: Remove unused variable 2022-05-09 11:13:15 +02:00
Evangelos Ribeiro Tzaras
2ea4b8736f sip: call: Fix header alignment
Uncrustify must have gotten confused.
2022-05-09 11:13:15 +02:00
Evangelos Ribeiro Tzaras
47d4164a09 sip: media-pipeline: Take srtp into account when determing pipeline state
If we're using srtp we should also consider the state of srtpenc and srtpdec
elements when determining the state of the whole pipeline.
2022-04-24 13:36:26 +02:00
Evangelos Ribeiro Tzaras
bfda8f6a3e sip: media-pipeline: Introduce SRTP elements
The rtpbin will request GstSrtpDec and GstSrtpEnc elements using the
"request-{rtp,rtcp}-{de,en}coder" family of signals.

The newly added boolean use_srtp controls whether the srtp elements are
returned in the signal handler and thus decides if SRTP is used or not.
2022-04-24 13:36:24 +02:00
Evangelos Ribeiro Tzaras
5d0ae4a6fa sip: media-pipeline: Debug pipeline graph on SIGUSR2
Ust GST_DEBUG_BIN_TO_DOT_FILE to generate a dot graph of a pipeline for
debugging purposes when SIGUSR2 is received.

Note the same signal is also used within the dummy plugin to simulate an
incoming call from an unknown number, so when testing you probably want either
the sip plugin or the dummy plugin, but not both.
2022-04-24 13:33:19 +02:00
Evangelos Ribeiro Tzaras
58f9f5cb62 sip: media: Allow specifying SRTP for GStreamer capabilities
When using SRTP the GstCaps must be set accordingly.
2022-04-24 13:31:40 +02:00
Evangelos Ribeiro Tzaras
7ac862155b Uncrustify sources
Ran `find src plugins -iname '*.[c|h]' -print0 | xargs -0 uncrustify --no-backup`
with some minimal manual intervention.
2022-04-24 12:59:42 +02:00
Evangelos Ribeiro Tzaras
605776641d sip: media-pipeline: Fix socket reuse
We were using two distinct pipelines, one for receiving and one for
sending. The receive pipeline was set to the playing state to allocate
the sockets which we would reuse for the sending direction for our NAT
traversal scheme.

The rework to a single pipeline broke reusing sockets subtly.

This happened because the state of the GstUDPSrc could be reset leading
to newly allocated sockets once the pipeline is set to play.

This is now fixed by locking the state of the GstUDPSrc in the ready
state during socket reuse setup and while the pipeline is paused.

Additionally get rid of the "close-socket" property on the udp sources
because it was never needed.

Fixes aa446f82

sq
2022-04-22 19:23:14 +02:00
Evangelos Ribeiro Tzaras
f44b4c7ef8 sip: origin: Debug print public IP as seen by the registrar 2022-04-22 19:23:14 +02:00
Evangelos Ribeiro Tzaras
db503e84cf sip: media-pipeline: Remove unused variables
This is a remnant from the refactor to unify the pipelines.
2022-04-22 19:23:14 +02:00
Evangelos Ribeiro Tzaras
aa446f8218 sip: pipeline: Unify send and receive pipeline
Using a single pipeline makes implementing encryption easier because we don't
need to duplicate srtpenc and srtpdec elements for each direction.

It also makes it easier to switch to using farstream down the line (see #426).
2022-04-12 08:03:49 +00:00
Evangelos Ribeiro Tzaras
1e9d817ef2 sip: media-pipeline: No need to undef locally declared macros
It cannot bleed into other files, so we don't have to bother cleaning it up.
2022-04-12 08:03:49 +00:00
Eugenio Paolantonio (g7)
f8825befd8 ofono: call: do not try to pass the "properties" property
The "properties" property doesn't exist anymore since
dbfa593a07.

Signed-off-by: Eugenio Paolantonio (g7) <me@medesimo.eu>
2022-04-12 07:40:14 +00:00
Evangelos Ribeiro Tzaras
be9471cc03 sip: media-pipeline: Use debug macros to allow graphing pipelines
If the environment variable GST_DEBUG_DUMP_DOT_DIR is set, a graph of the send
and receive pipelines will be written to disk.

To generate a png from the exported dot files graphviz can be used like this:

`dot -Tpng -oimage.png graph.dot`
2022-04-05 09:46:16 +00:00
Anders Jonsson
397870a75b plugins: Use American spelling 2022-03-29 13:37:54 +00:00
Andrey Skvortsov
86beb37e53 sip-account-widget: Add switch to display password 2022-03-27 11:33:37 +00:00
Evangelos Ribeiro Tzaras
0e3a07aabf sip: media-pipeline: Setup socket reuse for RTP and RTCP during initialization
Now that initialization is split per pipeline and that the OS handles port
allocation we can move setting up socket reuse into the pipeline initialization
step instead of setting it up when starting the media pipelines.

This makes the calls_sip_media_pipeline_start() method a bit simpler.

We're also now reusing sockets for RTCP.

Closes #315
2022-03-05 23:02:15 +01:00
Evangelos Ribeiro Tzaras
a7fcb9c0c0 sip: origin: Try fetching RTCP port from SDP attributes
And fallback to the legacy behaviour of RTCP=RTP+1
2022-03-05 23:02:15 +01:00
Evangelos Ribeiro Tzaras
849f298609 sip: media-pipeline: Remove lport-rtp and lport-rtcp property
We're not setting the desired ports from the outside anymore, but rather
querying the ports that have been allocated by the operating system.

Therefore the lport-rtp and lport-rtcp property have become superfluous and are
being removed. We also adapt to changes outside of the pipeline code.
2022-03-05 23:02:15 +01:00
Evangelos Ribeiro Tzaras
aeebdfbf53 sip: call: Add pipeline as a construct only property
In the future when we will be able to switch pipelines this might change.
2022-03-05 23:02:15 +01:00
Evangelos Ribeiro Tzaras
7033c1cd75 media manager: Manage and hand out available pipelines
The media manager will always try to have a pipeline ready.
2022-03-05 23:02:15 +01:00