1
0
Fork 0
mirror of https://gitlab.gnome.org/GNOME/calls.git synced 2024-12-12 07:37:35 +00:00
Commit graph

67 commits

Author SHA1 Message Date
Evangelos Ribeiro Tzaras
36880c3d34 sip: Gather public IP from REGISTER response and use it in SDP
Fixes #335
2021-10-06 13:43:04 +00:00
Evangelos Ribeiro Tzaras
4675821838 sip: origin: Recreate handles when updating credentials
Otherwise transport protocol changes won't be picked up.

This also allows to get rid of update_nua().
2021-09-29 21:33:55 +00:00
Evangelos Ribeiro Tzaras
1718823b80 sip: Do not fail if CallsNetworkWatch is unavailable
In this case network changes will not be detected.
Additionally fall back to binding on all network interfaces (in this case a user
will have problems when using multiple network interfaces, but there is really
not much we can do without a functioning CallsNetworkWatch).
2021-09-24 05:24:41 +00:00
Evangelos Ribeiro Tzaras
b6ee0bb48d sip: sdp: Hang up call when there are no common codecs 2021-09-20 02:14:27 +00:00
Evangelos Ribeiro Tzaras
929d76708a sip: sdp: Honour per media connections
Otherwise we might miss the IP of the remote peer leaving us unable to
establish a connection for RTP.

From https://datatracker.ietf.org/doc/html/rfc4566#section-5.7

   A session description MUST contain either at least one "c=" field in
   each media description or a single "c=" field at the session level.
   It MAY contain a single session-level "c=" field and additional "c="
   field(s) per media description, in which case the per-media values
   override the session-level settings for the respective media.
2021-09-20 02:14:27 +00:00
Evangelos Ribeiro Tzaras
cf3face6cc sip: Fix possible NULL pointer dereference
The assumption that the IP of the remote peer can always be found in the
sdp_connection member of the sdp_session_s struct does not always hold true
and we should handle this case gracefully (i.e. without crashing).
2021-09-20 02:14:27 +00:00
Evangelos Ribeiro Tzaras
400281c07e sip: origin: Fix memory leak 2021-09-20 02:14:27 +00:00
Evangelos Ribeiro Tzaras
a5cfd9eb24 sip: origin: Bind sockets to NIC with default route
Otherwise sofia may use the wrong interface resulting in unroutable packets.

Closes #317
2021-09-05 18:16:24 +02:00
Evangelos Ribeiro Tzaras
6b33845b11 sip: origin: Do not use CallsNetworkWatch during tests
As local testing showed we might get netlink message headers of type
NLMSG_ERROR which leads to a warning being printed and the test to fail.
2021-09-05 18:01:45 +02:00
Evangelos Ribeiro Tzaras
56259fd1f1 sip: origin: Destroy registration handle on deinit
Otherwise shutting down may be timing out, because there are pending messages.
Calling nua_destroy_handle() will kill any dialog/leg.
2021-09-02 20:13:25 +02:00
Evangelos Ribeiro Tzaras
a3d91d92b5 sip: origin: Handle nua_shutdown() timeout gracefully
If we don't handle the timeout explicitly we would never leave the
`while (!self->is_nua_shutdown)` loop.
2021-09-02 20:11:36 +02:00
Evangelos Ribeiro Tzaras
bede9f42e8 sip: origin: Recreate sofia handles on network change
Otherwise the origin will not be able to do any communication anymore
as used sockets might not be valid any more.

Fixes #317
2021-09-02 20:08:48 +02:00
Evangelos Ribeiro Tzaras
2df221c94c sip: origin: Warn instead of asserting in update_nua() on nua stack
Crashing the application is overkill in this case.
2021-09-02 09:12:13 +02:00
Evangelos Ribeiro Tzaras
16897eebe6 sip: origin: Include transport parameter in NUTAG_URL and friends
This makes sure all of the supported protocols have a chance of working.

Since nua_set_params does not update NUTAG_URL (carefully rechecking the docs
verifies this), it is safe to remove the code in update_nua().

However, this means that we will have to recreate the nua stack,
which incidentally is currently being worked on:
https://gitlab.gnome.org/GNOME/calls/-/merge_requests/402
2021-09-02 09:12:13 +02:00
Evangelos Ribeiro Tzaras
42c0872499 origin: Fix the password when updating credentials
Updating the credentials was broken otherwise.
2021-09-02 09:12:13 +02:00
Evangelos Ribeiro Tzaras
5371debc57 sip: origin: Bail when trying to go online but nua handle is not present
This fixes a segmentation fault.
2021-09-02 09:12:13 +02:00
Evangelos Ribeiro Tzaras
c7731b189a origin: Add "numeric-addresses" property
This will be useful in the dialpad to determine whether we should allow
only numeric input or not.
2021-08-13 02:13:27 +02:00
Evangelos Ribeiro Tzaras
f5cd48bd99 sip: origin: Add protocol prefix if missing 2021-08-13 02:13:27 +02:00
Evangelos Ribeiro Tzaras
e9f155678e sip: origin: Set and update name of origin 2021-07-20 10:17:17 +02:00
Evangelos Ribeiro Tzaras
1749dcec60 sip: provider: Add API to remove origins 2021-07-20 10:17:17 +02:00
Evangelos Ribeiro Tzaras
a638b64402 account: Add address property 2021-07-20 10:17:17 +02:00
Evangelos Ribeiro Tzaras
babd013bd7 Remove CallsCredentials and adapt to changes
The provider knows best which credentials it needs and CallsCredentials
was not generic to begin with, so get rid of it.
2021-07-20 10:17:17 +02:00
Evangelos Ribeiro Tzaras
864a15d799 sip: origin: Explicitly include contact header for sofia > 1.13
Fixes #304
2021-07-16 09:11:27 +00:00
Evangelos Ribeiro Tzaras
8a230fc5b5 sip: origin: No need to explicitly clear nua handles
Memory allocations from su_home_t will get cleaned up, when the home is freed.
2021-06-21 13:20:32 +02:00
Evangelos Ribeiro Tzaras
a803294c4a sip: origin: Handle unregistering (going offline)
and set the account state accordingly.
2021-06-18 19:29:25 +02:00
Evangelos Ribeiro Tzaras
e6c7994abc sip: origin: Remove unnecessary notify 2021-06-18 19:29:25 +02:00
Evangelos Ribeiro Tzaras
5bd84043b9 sip: origin: codestyle 2021-06-18 19:28:12 +02:00
Evangelos Ribeiro Tzaras
736c17a4bc sip: origin: Fix if condition in dispose()
This should make sure that origins go offline
2021-06-11 17:51:06 +02:00
Evangelos Ribeiro Tzaras
0c966fdf83 origin: Add API to query supported protocols
This will allow selecting a suitable origin when placing outgoing calls.
2021-05-28 17:02:02 +02:00
Evangelos Ribeiro Tzaras
53f69b06dd call: Introduce protocol property 2021-05-28 13:18:24 +02:00
Evangelos Ribeiro Tzaras
fecdc1fff8 cleanup: Fix calls_origin_get_name() related memory leaks
Document calls_origin_get_name() correctly as transfer-full.
Additionaly fix related memory leaks.
2021-05-28 13:18:24 +02:00
Evangelos Ribeiro Tzaras
3edd6d002b sip: origin: Implement CallsAccountsInterface 2021-05-04 05:57:42 +02:00
Evangelos Ribeiro Tzaras
781adaddee sip: origin: Use CallsAccountState instead of SipAccountState 2021-05-04 05:57:42 +02:00
Evangelos Ribeiro Tzaras
5d0de3d299 sip: origin: Use CallsCredentials and adapt to changes
All parts not related to credentials are now being set when creating the nua
handles and then updated with nua_set_params() when the credentials get updated.
2021-05-04 05:57:06 +02:00
Evangelos Ribeiro Tzaras
21e72c9e12 sip: origin: Fix nua_authenticate call
nua_* calls need TAG_END or TAG_NULL as the final parameter.
2021-05-01 13:59:32 +02:00
Evangelos Ribeiro Tzaras
70cb120951 sip: fix typos
Thanks to lintian for pointing it out!
2021-04-23 15:35:14 +02:00
Evangelos Ribeiro Tzaras
f178b3546b sip: provider: document public functions 2021-04-16 00:39:42 +00:00
Evangelos Ribeiro Tzaras
7ed1ee2502 sip: codestyle changes
Shuffle the code around and make use of docstrings to conform to
the newly introduced coding style as described in `HACKING.md`

This commit also introduces docstrings describing each source file.
2021-04-16 00:39:42 +00:00
Evangelos Ribeiro Tzaras
166ea8b21a sip: origin: Allow using a local port of 0
Using a port of 0 let's the operating system decide to which port to bind to.
Additionally refuse to use priviliged ports and print a warning.
2021-04-16 00:39:42 +00:00
Evangelos Ribeiro Tzaras
b3cd378704 sip: origin: Remove unnecessary code
Remove a remnant from early development which has no use anymore
since "direct-connection" is now a property.
2021-04-16 00:39:42 +00:00
Evangelos Ribeiro Tzaras
db63efa29f sip: origin: Remove hardcoded display name from contact header
We might want to set it from the configuration later.
2021-04-16 00:39:42 +00:00
Evangelos Ribeiro Tzaras
b88d432401 sip: origin: make create_inbound a private function
and shuffle the functions around so that we don't need forward declarations
2021-04-16 00:39:42 +00:00
Evangelos Ribeiro Tzaras
c2bd6e9344 sip: media: rework codec negotiation
introduce `calls_sip_media_manager_get_capabilities ()` which takes
a GList of MediaCodecInfo's as input to generate a SDP message.
If using in an SDP answer we simply feed it a list of the common codecs
as gathered from the SDP offer.
2021-04-12 08:38:24 +00:00
Evangelos Ribeiro Tzaras
4eb07148cc sip: call: rename setup local/remote connection functions
Avoid ambiguity by renaming the functions. `setup_local_media ()`
could give the impression that we're setting up media codecs which
is not the case.
2021-04-12 08:38:24 +00:00
Evangelos Ribeiro Tzaras
7d69d78b70 origin: Add country-code property
And add a binding in CallsManager for the default origin
2021-04-06 14:27:26 +00:00
Evangelos Ribeiro Tzaras
8a6f1bb203 sip: fix infinite ringtone loop
by making sure the call-added signal is emitted early enough
so that all consumers (display, ringer, etc) have a chance of getting
notified when the call state changes from f.e. DIALING to DISCONNECTED
similar to how its done in 03d960ccaf
for the dummy provider.
2021-04-03 00:08:31 +02:00
Evangelos Ribeiro Tzaras
17ac56fe44 sip: slightly improved authentication
* removed nua_callstate_authenticating as it was never hit
* move debug statement further up, because we might not reach it if no
  corresponding call is found
* handle 401 and 407 the same way
  note: we should record which realm we're authenticating against during
  REGISTER so we can prompt the user for additional credentials when
  challenged for a different realm - still happens when calling from
  a sip.linphone.org account to a jmp.bwapp.bwsip.io account.
2021-04-03 00:08:31 +02:00
Evangelos Ribeiro Tzaras
cadaa6a3e0 sip: use g_return_if_fail and friends only for public functions 2021-04-03 00:08:31 +02:00
Evangelos Ribeiro Tzaras
45285062ca sip: improve connection handling by using relevant sofia tags
NUTAG_SUPPORTED and SIPTAG_EXPIRES_STR for instance

sip: include expire, urn uuid

sip.linphone.org accounts seems to be working!
2021-04-03 00:08:31 +02:00
Evangelos Ribeiro Tzaras
de44a17fe5 sip: use ipv4 exclusively for now
IPv6 should work, but sofia's outbound engine keep printing
errors involving the outbound engine. Working theory:
Failing ICMPv6 (pings) can make sofia think we don't have connectivity.
Note that we also don't get any answers from the SIP servers we tried so far.
2021-04-03 00:08:31 +02:00