Evangelos Ribeiro Tzaras
fbbe17139d
sip: origin: Add property tracking usage for tel URIs
...
Fixes #277
2021-12-26 17:45:12 +01:00
Evangelos Ribeiro Tzaras
66224c9a48
origin: Get rid of "numeric-addresses" property
2021-12-26 17:45:12 +01:00
Evangelos Ribeiro Tzaras
cd6917dcf6
sip: origin: Include address in warning when we cannot dial
...
This allows figuring out which call failed.
2021-12-21 14:52:14 +00:00
Evangelos Ribeiro Tzaras
a048b4c83d
call: Move state property into base class
...
This let's us get rid of a lot of duplication in the derived classes.
Additionally we set the initial state to CALLS_CALL_STATE_INCOMING if
inbound is TRUE and CALLS_CALL_STATE_DIALING otherwise.
2021-12-20 12:25:19 +01:00
Evangelos Ribeiro Tzaras
73cf5081d0
sip: origin: Prevent dialing when not online
...
Setting up the nua context could have failed (see #379 ) and in that case
our nua_*() calls might derefence a NULL pointer.
2021-12-15 20:01:40 +01:00
Evangelos Ribeiro Tzaras
2cf7c5e981
sip: origin: Make sure "@host" is in the dial string
...
This helps avoid some typing work in the case of dialing telephone numbers.
Fixes #350
2021-10-30 18:49:27 +02:00
Evangelos Ribeiro Tzaras
1b4e968e8e
sip: origin: Bail when trying to dial empty string
2021-10-30 18:49:27 +02:00
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