Daniel Gultsch
f4be142e4d
add helper methods for content modification to RtpContentMap
2022-11-22 10:13:48 +01:00
Daniel Gultsch
e2f98f6bbc
ensure cc-ed proceed is equivalent to accept
2022-11-22 10:13:07 +01:00
Daniel Gultsch
9897fa3a45
rename initiateIceRestart to renegotiate to handle content adds
2022-11-21 09:10:01 +01:00
Daniel Gultsch
304205b2e3
take senders attr into account when converting to and from sdp
2022-11-20 17:00:40 +01:00
Daniel Gultsch
59ea66ca78
make sure VideoSourceWrapper is stored in property
2022-11-19 14:19:07 +01:00
Daniel Gultsch
27d8da2ab4
refactor WebRTCWrapper to allow for track adds
2022-11-19 13:03:34 +01:00
Daniel Gultsch
8fb2c11771
use plurals for missed call strings
2022-11-19 08:14:50 +01:00
Daniel Gultsch
6b9ebb3abf
remove TODO
2022-11-18 10:40:16 +01:00
Daniel Gultsch
109a20ca40
do not expect stream features after inline resume
2022-11-17 10:52:30 +01:00
Daniel Gultsch
29461edf40
process challenge only on secure connection
2022-11-17 07:48:09 +01:00
Daniel Gultsch
44bfff7e49
fall back to regular authentication if fast fails
2022-11-16 11:00:43 +01:00
Daniel Gultsch
6ececb4d2b
refactor webrtc video source + capture code
2022-11-12 13:37:56 +01:00
Daniel Gultsch
dac2e17133
disable quick start if fast is available but we didn’t use fast
2022-11-01 18:06:32 +01:00
Daniel Gultsch
35ee01cb28
reset fast token on login failure
2022-11-01 16:44:36 +01:00
Daniel Gultsch
e2b9f0e77a
add support for HashedToken channel binding
2022-10-15 20:53:59 +02:00
Daniel Gultsch
24badda4c9
do quick start with HT-SHA-256-NONE
2022-10-15 18:56:31 +02:00
Daniel Gultsch
c13787873c
request fast token
2022-10-15 12:27:38 +02:00
Daniel Gultsch
3378447f60
parse hash token names
2022-10-15 00:09:29 +02:00
Daniel Gultsch
0cd416298d
ensure we only select channel binding methods available for tls version
2022-10-14 20:00:36 +02:00
Daniel Gultsch
7eb160386d
enable SM if it wasn’t enabled in bind 2
2022-10-14 13:29:59 +02:00
Daniel Gultsch
9a0c90f066
read new stream features directly after success
2022-10-14 13:13:21 +02:00
Daniel Gultsch
cb775ece99
wait for DB restore before bind
2022-09-26 09:47:53 +02:00
Daniel Gultsch
3d56d01826
handle case when server loses support for quick start
2022-09-26 07:53:48 +02:00
Daniel Gultsch
32f9a58d9a
pipeline sasl2 directly after stream start
2022-09-25 14:13:04 +02:00
Daniel Gultsch
126e8ef08c
refactor sasl 2 authentication code
2022-09-24 14:58:49 +02:00
Daniel Gultsch
9f5da67539
use bind:0 namespace
2022-09-24 11:59:53 +02:00
Daniel Gultsch
5a3cca9554
use bind 2 tag and sasl 2 user-agent
2022-09-15 14:28:51 +02:00
Daniel Gultsch
bf15070fef
bump sasl2 namespace
2022-09-15 13:10:15 +02:00
Daniel Gultsch
495f79921d
store full sasl mechanism (not just priority)
2022-09-15 12:22:05 +02:00
Daniel Gultsch
d4ec1eaf38
refactor processFailure and processChallange into methods
2022-09-07 10:31:11 +02:00
Daniel Gultsch
5da9f5b3a3
refactor ScramMechanism to support PLUS
2022-09-06 16:28:28 +02:00
Daniel Gultsch
b78acb6fca
extract channel binding types via XEP-0440
2022-09-06 14:53:12 +02:00
Daniel Gultsch
a210568a9c
refactor SASL choice into factory; remove unused TagWriter
2022-09-06 09:25:23 +02:00
Daniel Gultsch
eee14a822a
add todos
2022-09-05 11:07:25 +02:00
Daniel Gultsch
e0bd1d168c
do not attempt resume when already in smacks session
2022-09-04 09:28:00 +02:00
Daniel Gultsch
052c58f377
rudimentary bind 2 implementation
2022-09-03 20:17:29 +02:00
Daniel Gultsch
00dd9a8058
remove support for sm:2
2022-09-03 12:16:06 +02:00
Daniel Gultsch
4f92ba880b
process authorization id in case full jid changes
2022-08-30 09:31:06 +02:00
Daniel Gultsch
3fac7d4992
fix very rare NPE (race condition)
2022-08-30 08:21:32 +02:00
Daniel Gultsch
8f76084a43
add sm-failed processing
2022-08-29 19:44:39 +02:00
Daniel Gultsch
7ea4f64ce4
code clean up for resumed processing
2022-08-29 19:30:03 +02:00
Daniel Gultsch
f6ab3dd068
support resume via sasl 2.0
2022-08-29 19:22:25 +02:00
Daniel Gultsch
928a16d31d
abort on 'continue' - no client support
2022-08-29 18:53:34 +02:00
Daniel Gultsch
6202cbe26b
minor code clean up for tag and element
2022-08-29 18:40:49 +02:00
Daniel Gultsch
5fc8ff899a
support logging in via SASL 2
2022-08-29 17:09:52 +02:00
Daniel Gultsch
a717917b3d
explicitly search for namespaces when processing stream features
2022-08-29 15:09:53 +02:00
Dmitry Markin
a6b88ba9e9
Add missed call notifications
...
Co-authored-by: Daniel Gultsch <daniel@gultsch.de>
2022-08-29 12:41:35 +02:00
Daniel Gultsch
e8736d5f1b
bump guava library
2022-08-22 11:29:04 +02:00
Daniel Gultsch
fe3433e427
do not accept empty credentials as ice-restart
2022-08-10 09:11:09 +02:00
Daniel Gultsch
d41020ccf3
ignore race condition after reject from notification
...
fixes #4351
fixes #4261
2022-08-05 10:46:15 +02:00
Daniel Gultsch
62a379862e
jingle rtp: improve logging and error reporting
2022-08-01 10:14:49 +02:00
Daniel Gultsch
42bd8e6d61
minor code clean up
2022-06-22 07:56:44 +02:00
Daniel Gultsch
a9dd5a3c76
support sasl/temporary-auth-failure
...
if the server is unable to query the database throwing a temporary-auth-failure
might be more appropriate
2022-06-14 08:39:58 +02:00
Stephen Paul Weber
78048bbd3d
Enable WebRTC-BindUsingInterfaceName/Enabled/
...
This makes 464XLAT networks (such as T-Mobile LTE) work.
https://bugs.chromium.org/p/webrtc/issues/detail?id=10707
2022-03-10 16:29:00 +01:00
Daniel Gultsch
372078629b
fix ice candidate sending when different credentials are used
2022-02-25 17:26:36 +01:00
Daniel Gultsch
1f772df74f
remove security check that ensures rtp connection was properly finished
...
this only causes race conditions
2022-02-25 16:24:16 +01:00
Daniel Gultsch
d6be6ddd18
use full file name for all new files
2022-02-22 16:05:02 +01:00
Daniel Gultsch
d7f38a3e5a
fix precondition for timeout handling
2022-02-12 10:19:54 +01:00
Daniel Gultsch
b6442c0bd4
add Samsung S4 to hardware aec blacklist
...
fixes #4267
2022-01-18 11:30:23 +01:00
Daniel Gultsch
db834a1f07
indicate call reconnect in notification
2021-11-19 12:26:11 +01:00
Daniel Gultsch
f8a94161db
don't play tone going from connect->reconnect->connect
2021-11-19 12:25:27 +01:00
Daniel Gultsch
a508a81553
externalize rtc config generation into seperate method
2021-11-17 11:33:15 +01:00
Daniel Gultsch
61fb38cd84
clean up some error handling error ICE restarts
2021-11-17 10:49:16 +01:00
Daniel Gultsch
0a18c8613f
assume credentials are the same for all contents when restarting ICE
2021-11-16 17:08:34 +01:00
Daniel Gultsch
abb671616c
synchronize setDescription calls
2021-11-16 15:17:12 +01:00
Daniel Gultsch
297a843b9c
use implicit rollback (needed to be enabled on libwebrtc)
2021-11-16 13:17:10 +01:00
Daniel Gultsch
0698fa0d8c
store peer dtls setup for later use in ice restart
2021-11-16 11:21:11 +01:00
Daniel Gultsch
70b5d8d81a
set proper peer dtls setup on ice restart received
2021-11-15 21:49:31 +01:00
Daniel Gultsch
0a3947b8e3
terminate with application failure when failing to apply ICE restart
...
This is fairly unlikely to happen in practice
2021-11-15 17:18:45 +01:00
Daniel Gultsch
3f402b132b
respond with tie-break to prevent ICE restart race
2021-11-15 13:03:04 +01:00
Daniel Gultsch
5b80c62a63
treat transport-info w/o candidates and changed credentials as offer
2021-11-14 18:22:18 +01:00
Daniel Gultsch
717c83753f
delay discovered ice candidates until JingleRtpConnection is ready to receive
...
otherwise setLocalDescription and the arrival of first candidates might race
the rtpContentDescription being set
2021-11-11 21:02:17 +01:00
Daniel Gultsch
b6dee6da6a
reverse: webrtc: include oldState in onConnectionChange
...
turns out we don’t need it and a better way is for RtpConnection to keep track of *all*
states in the current generation
2021-11-11 17:05:36 +01:00
Daniel Gultsch
9c3f55bef2
use stopwatch to keep track of jingle rtp session duration
2021-11-11 16:52:18 +01:00
Daniel Gultsch
9843b72f6f
always use Camera2Enumerator
2021-11-11 15:23:45 +01:00
Daniel Gultsch
61851e5f84
do not automacially hang up failed webrtc sessions
2021-11-11 14:40:15 +01:00
Daniel Gultsch
4ec0996dff
webrtc: include oldState in onConnectionChange
2021-11-11 11:19:37 +01:00
Daniel Gultsch
fda45a7c86
use implicit descriptions for WebRTC
...
using the parameter-free form of setLocalDescription() solves some potential race conditions
that can occur - especially once we introduce restartIce()
2021-11-10 16:40:24 +01:00
Daniel Gultsch
bae9fc45c2
make rtcpMux optional
2021-10-31 10:20:58 +01:00
Daniel Gultsch
20e4d108d4
fixed regression of not handling jingle content map parsing failures
2021-10-05 15:43:05 +02:00
Daniel Gultsch
3ede2d00bd
remove logging
2021-10-02 16:54:19 +02:00
Daniel Gultsch
d2a387e82f
correctly calculate socks destination
2021-10-02 16:44:36 +02:00
Daniel Gultsch
da14f83a42
ensure all bytes are read in socks handshake. fixes #4188
2021-10-02 14:24:36 +02:00
Daniel Gultsch
63f5f8c89d
modify TODOs in JingleRtpConnection upon better understanding of the WebRTC stack
2021-09-08 10:47:34 +02:00
Daniel Gultsch
7466d12505
ring during device discovery
2021-05-22 19:37:20 +02:00
Daniel Gultsch
87f99d3570
Transferables interface needs to differentiate between 0 and null file size
2021-05-17 15:51:21 +02:00
Daniel Gultsch
67e5f839f1
ignore crypto callbacks when rtp session has already been terminated
2021-05-08 11:50:18 +02:00
Daniel Gultsch
9182a300c5
report fingerprint missmatch as securiy exception
2021-05-08 10:35:07 +02:00
Daniel Gultsch
8d391753d7
encrypt rtp map as future
2021-05-08 08:45:31 +02:00
Daniel Gultsch
337aa4a110
consider Config.REQUIRE_RTP_VERIFICATION on decrypt. fail as future
2021-05-07 22:55:20 +02:00
Daniel Gultsch
ddf597e0d3
invoke x509 verification upon receiving prekey message in rtp session
2021-05-06 18:40:35 +02:00
Daniel Gultsch
e2324209ed
make sure omemo sessions are verified if the the respective config flag is set
2021-05-04 19:04:01 +02:00
Daniel Gultsch
48156dd27f
a/v calls: seperate out SECURITY error from APP_FAILURE
...
until now problems with verifying the call (omemo or DTLS missing) would
just be another app failure. This commit displays verifications problems as
their own thing.
2021-05-04 10:10:34 +02:00
Daniel Gultsch
6d91551f59
use onAddTrack instead of deprecated onAddStream
2021-05-03 13:06:42 +02:00
Daniel Gultsch
0717f9ba18
upgrade libwebrtc to m90 and enable extmap-allow-mixed
2021-05-03 09:48:46 +02:00
Daniel Gultsch
ac7855a332
show domains in manual cert accept dialog
2021-05-03 08:28:03 +02:00
Daniel Gultsch
bc58fb0fbd
Always verify hostname/domain
...
There might be corner cases where it is required to use self signed
certificates. However there should be no corner cases where it is
required to use a wrong domain name. This commit swaps out the
MemorizingHostnameVerifier that let users accept wrong domains with the
standard XmppDomainVerifier.
closes #4066
2021-04-30 09:55:22 +02:00
Daniel Gultsch
9fc04c4b1e
when receiving out-of-order session-init in terminal state do not move to terminal again
...
fixes #4049
2021-04-08 10:23:39 +02:00
Daniel Gultsch
30c9e7399e
log track class in onAddTrack
2021-03-29 10:57:56 +02:00
Daniel Gultsch
1822a71c2a
Do not crash when receiving video call on device w/o camera
...
Upon accepting a video call on a device that can not establish a video track on
its own (for example by not having a camera), displaying the video enable/disable
button would fail. This commit defaults this button to disabled.
2021-03-26 12:54:26 +01:00
Daniel Gultsch
ce7f59a76c
use okhttp to fetch captcha
2021-03-22 10:39:53 +01:00
Daniel Gultsch
1cd95aefa6
migrate redirection urls to HttpUrl
2021-03-22 10:12:53 +01:00
Daniel Gultsch
739d20428a
optimize imports
2021-03-21 21:39:04 +01:00
Daniel Gultsch
a6244d986a
use settable futures for slot requester
2021-03-21 20:45:26 +01:00
Daniel Gultsch
8ac97b0027
disable extmap_allow_mixed by default
2021-03-21 19:40:52 +01:00
Daniel Gultsch
e217551a82
migrate to OkHttp instead of HttpUrlConnection
...
OkHttp gives us more fine grained control over the HTTP library and frees us from any platform bugs
2021-03-19 14:57:20 +01:00
Daniel Gultsch
b09a1432a3
Stanza.getErrorCondation only ever needs the tag name
2021-03-18 11:35:41 +01:00
Daniel Gultsch
6f1b71970d
parse extmap-allow-mixed
2021-03-16 18:52:38 +01:00
Daniel Gultsch
3baacf8862
switch to unified plan
2021-03-16 18:52:38 +01:00
Daniel Gultsch
2681ad82e1
complain if mLineIndex can not be found when receiving candidates
2021-03-16 18:52:25 +01:00
Christopher Vollick
ef24d2050b
Remove Renomination from WebRTC Options
...
This is a feature of WebRTC that's [not standardized][1] and only
supported by libwebrtc. Since there's no support in jingle for passing
this capability from one peer to another, we're currently hard-coding
this option into both the local candidate and also the remote candidate
so they can use it.
But I'm trying to call a user that isn't using WebRTC, and renomination
is causing the call to stay in "connecting..." state for 10 or 20
seconds, sometimes longer, while both sides wait for the other to
nominate something based on their individual beliefs about the standards
they're using.
Removing this seems to make connecting relatively instantaneous.
If we want to reintroduce this feature, we should probably make a XEP so
the peers can negotiate honestly about it, and only use it if both sides
truely support the feature.
[1]: https://datatracker.ietf.org/doc/html/draft-thatcher-ice-renomination-01
2021-03-04 08:26:52 +00:00
Daniel Gultsch
c5f801c1fe
do not push empty candidates to backlog
2021-03-03 13:12:10 +01:00
Daniel Gultsch
d52c46d582
use omemo verification only if omemo is enabled in conversation
2021-03-03 12:55:27 +01:00
Daniel Gultsch
3ee70b1d48
show verified shield in rtp session activity
2021-03-03 09:41:05 +01:00
Daniel Gultsch
e4b2bb4a42
throw exception when unable to encrypt
2021-03-03 08:22:21 +01:00
Daniel Gultsch
8a6430ae29
ground work for omemo dtls verification
2021-03-02 21:13:49 +01:00
Daniel Gultsch
f92ea5c70b
resend <propose/> only if server has stream mgmt
2021-02-21 13:37:08 +01:00
Daniel Gultsch
484f633180
let Conversations (not Android) play ringtone and vibration
...
fixes #3972 fixes #3801 fixes #3931
2021-02-18 20:55:31 +01:00
Daniel Gultsch
72e268e6b1
add TODO comments wrt to missing <retract/> parsing
2021-02-18 09:36:51 +01:00
Daniel Gultsch
db447f845e
resend session proposal on rebind
2021-02-12 11:36:44 +01:00
Daniel Gultsch
6cab0ad496
make rtp proposal tracked by SM. fixes #3983
2021-02-12 10:35:13 +01:00
Daniel Gultsch
7330d8a7f0
fixed race conditions around PROCEED state. fixes #3989
2021-02-11 16:56:57 +01:00
Daniel Gultsch
b6d62c13ef
use ascii notation for punycode domains in SNI
2021-02-07 09:38:55 +01:00
Daniel Gultsch
0a2c753620
do not use offline fallback rtp capability if account is disabled
2021-01-26 09:35:03 +01:00
Daniel Gultsch
8ce7bfb95e
automated code clean up
2021-01-23 09:25:34 +01:00
Daniel Gultsch
e711b3d294
remember last rtp capability
2021-01-22 08:24:19 +01:00
Ferdinand Pöll
453ca7c0ed
Migrate from Android Support Library to AndroidX
...
Unignored gradle.properties since androidX requires additions there
See also https://developer.android.com/jetpack/androidx/migrate
2021-01-18 20:49:35 +01:00
Daniel Gultsch
372ddbfb49
Revert "offline presences aborts session proposals. fixes #3943 "
...
This reverts commit f23016c967
.
2021-01-06 09:03:42 +01:00
Emmanuel Gil Peyrot
17c697eed9
add 'id' attribute to outgoing ICE-UDP candidates
...
this attribute is mandatory as per the XEP.
2021-01-03 16:32:28 +00:00
Daniel Gultsch
2bec5459c5
properly null check ufrag and pwd before whitespace checking. fixes #3956
2021-01-03 16:05:17 +01:00
Daniel Gultsch
0569febf67
minor code clean up in XmppConnection class
2020-12-31 10:27:06 +01:00
Daniel Gultsch
0e54d8a2cf
implement SCRAM-SHA512
2020-12-31 09:32:05 +01:00
Daniel Gultsch
f23016c967
offline presences aborts session proposals. fixes #3943
2020-12-22 17:50:26 +01:00
Daniel Gultsch
1f392a688d
initial (untested) support for easy onboarding invites
2020-12-01 20:31:30 +01:00
Daniel Gultsch
d158eeaf72
terminate jingle call when regular call starts
2020-08-24 12:47:54 +02:00
Daniel Gultsch
91e94db747
extend isBusyState to check phone state as well
2020-08-24 09:51:26 +02:00
Daniel Gultsch
15b323ee69
fix crash after session-accept failed and session-accept contained candidates
...
Conversations would attempt to feed any candidates found in the session-accept into
WebRTC; even if the session wasn’t setup correctly.
this commit processes the candidates only if the session was setup correctly
fixes #3867
2020-08-22 08:12:28 +02:00
Daniel Gultsch
637c0cb15a
fixed rare race condition when receiving transport info right after WebRTCWrapper closes
...
fixes #3849
2020-08-01 14:18:03 +02:00
Daniel Gultsch
1ae7d6be16
recover from pre-jingle connection states (discover etc) into full fledged jingle connection
...
fixes #3847
2020-08-01 09:50:54 +02:00
Daniel Gultsch
f22e33e3ea
fixed race condition of WebRTCWrapper being closed before transitioning into terminal state
...
JingleRTPConnection shuts down the WebRTCWrapper before transitioning into a terminal state.
(This allows us to make sure it is actually closed when reaching that state);
However that means that, when we get a UI redrawn inbetween closing and transitioning we might
still be in SESSION_ACCEPTED but with no PeerConnection. This traditionally has triggered
an IllegalStateException on getting the EndUserState.
This commit catches the ISE and returns 'ENDING' instead.
Chances are that this is only visibiliy for a very brief time in the UI before the transition
triggers the UI to redraw with the proper state.
fixes #3848
2020-08-01 08:20:10 +02:00
Daniel Gultsch
32d55346cc
ensure server triggered jingle iq-errors get routed properly
2020-07-18 16:14:39 +02:00
Daniel Gultsch
bf85a55930
catch NPE when detecting camera facing. fixes #3820
2020-07-09 20:11:09 +02:00
Daniel Gultsch
6a6c9fb3bf
ignore race condition when toggling fixes #3822
2020-07-09 19:14:28 +02:00
Daniel Gultsch
fada3a63c9
store entire transport info for after session was accepted. fixes #3790
2020-06-22 18:07:27 +02:00
Daniel Gultsch
dddb7ece25
show app failure instead of crashing when egl fails to init. fixes #3795
2020-06-18 20:37:56 +02:00
Daniel Gultsch
169ee99afa
do not attempt to reject call if session had already ended. fixes #3798
2020-06-18 20:32:58 +02:00
Daniel Gultsch
7bcb29c482
be more liberal in 0167 payload-type parameter parsing
...
some implementations will transform the following SDP coming from Firefox
m=audio 12346 RTP/AVP 101
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
to
<payload-type channels="1" name="telephone-event" clockrate="8000" id="101">
<parameter value="0-15" xmlns="urn:xmpp:jingle:apps:rtp:1"/>
</payload-type>
While a missing name attribute is not legal according to the XEP; and 0-15 are
technically not just one value the following commit will accept it if there is
just one paramater.
2020-06-17 21:15:12 +02:00
Daniel Gultsch
c8f23aef4e
error response to sending the jingle ft hash should not file the transfer
2020-06-15 21:33:32 +02:00
Daniel Gultsch
ccdc91a497
remove check that would ensure you use jingle only with full jids
2020-06-14 09:01:47 +02:00
Daniel Gultsch
400c8461fc
fix feature discovery in jingle file transfer for empty resources
2020-06-13 22:53:24 +02:00