Commit graph

695 commits

Author SHA1 Message Date
Daniel Gultsch 0d4b175760 better failure behaviour after direct init from jitsi 2020-04-29 08:51:38 +02:00
Daniel Gultsch f93bac6d73 catch ISE around peerconnection.dispose() 2020-04-28 20:15:23 +02:00
Daniel Gultsch faf1ff365d modify call connected tone 2020-04-28 11:22:42 +02:00
Daniel Gultsch 27bf871472 play beep when voice call connects 2020-04-28 07:30:27 +02:00
Daniel Gultsch fc4397e5b9 play busy and dial tones 2020-04-27 17:51:38 +02:00
Daniel Gultsch 07911b2094 indicate ongoing call. fixes #3675 2020-04-27 11:53:31 +02:00
Daniel Gultsch 9fbf73d1ea do not log failed calls that never rang 2020-04-26 10:38:19 +02:00
Daniel Gultsch c41033e83c only take udp candidates from transport-info 2020-04-25 20:13:08 +02:00
Daniel Gultsch 4f5415ecba terminated rtp connection do not count as busy 2020-04-24 09:41:54 +02:00
Daniel Gultsch c0036b4ca6 increase busy timeout to 30s 2020-04-24 09:16:59 +02:00
Daniel Gultsch 96f6ae2b49 additional null check in case to is null 2020-04-23 20:11:45 +02:00
Daniel Gultsch 80cac3bd69 disable tcp candidates 2020-04-23 19:51:58 +02:00
Daniel Gultsch a008993d06 add 20s busy timeout to incoming calls 2020-04-22 21:59:20 +02:00
Daniel Gultsch 892d913e2c parsing iq erros also need to finish the connection 2020-04-22 18:42:07 +02:00
Daniel Gultsch 9fa9ca9cbc catch securityException when parsing rtp description 2020-04-22 16:35:08 +02:00
Daniel Gultsch 9afac21b0b don’t throw when user double taps accept button 2020-04-22 14:49:48 +02:00
Daniel Gultsch 876b1149d5 avoid double termination after failed connection 2020-04-21 22:59:54 +02:00
Daniel Gultsch e0cb127005 retract call when pressing home or power button during ringing 2020-04-21 22:46:46 +02:00
Daniel Gultsch 5b12e23382 improve logging for throws from native callbacks 2020-04-21 12:00:13 +02:00
Daniel Gultsch eb911b8196 show 215 status in server info 2020-04-21 11:40:05 +02:00
Daniel Gultsch d5e3d13158 do not just assume rtcp-mux 2020-04-21 09:11:17 +02:00
Daniel Gultsch 7898ba65cd extend extended webrtcwrapper logging 2020-04-20 17:05:27 +02:00
Daniel Gultsch 187dff3df9 put contact picture in incoming call notification 2020-04-20 15:57:31 +02:00
Daniel Gultsch df2ef0eeb0 automatically reject/ignore calls from strangers if the setting is set 2020-04-20 15:57:31 +02:00
Daniel Gultsch 1cc0dfad84 move sdp logging to different tag 2020-04-20 15:57:31 +02:00
Daniel Gultsch 5a0979b41e store 'ended call' when ended from proceed 2020-04-20 15:57:31 +02:00
Daniel Gultsch f7f0dc99a7 launch calls in new task 2020-04-20 15:57:31 +02:00
Daniel Gultsch a12760300c ensure that rtp connection is registered with connection manager 2020-04-20 15:57:30 +02:00
Daniel Gultsch c20c40a807 ensure webrtc connection gets closed after connection failure 2020-04-20 15:57:30 +02:00
Daniel Gultsch 7dfd47a5c4 better crash than leave WebRTCWrapper unclosed 2020-04-20 15:57:30 +02:00
Daniel Gultsch 934b98d199 add microphone availability check 2020-04-20 15:57:30 +02:00
Daniel Gultsch 16d34c2ba0 parse turns and stuns (regression from earlier commit) 2020-04-20 15:57:30 +02:00
Daniel Gultsch 2f437ea845 ignore iq errors if session has already been terminated 2020-04-20 15:57:30 +02:00
Daniel Gultsch fa3ef07580 be more strict with ice candidate parsing 2020-04-20 15:57:30 +02:00
Daniel Gultsch 0a18ab35c0 fixed 215 credential detection 2020-04-20 15:57:30 +02:00
Daniel Gultsch e545e95d39 getMedia() would throw null pointer when called after going from proposed to some error state 2020-04-20 15:57:30 +02:00
Daniel Gultsch 21e412ef6f only show remote video when connected 2020-04-20 15:57:30 +02:00
Daniel Gultsch 0c4f0c074d improve busy behaviour with multiple devices 2020-04-20 15:57:30 +02:00
Daniel Gultsch 45d5d1f635 capture in ~1920 resolution when available 2020-04-20 15:57:30 +02:00
Daniel Gultsch b95d406e61 use more approriate reason when failing because of parse errors 2020-04-20 15:57:30 +02:00
Daniel Gultsch ec6bcec849 use different aspect ratio for landscape 2020-04-20 15:57:30 +02:00
Daniel Gultsch 36e117979a put 'video' in ongoing video call notification 2020-04-20 15:57:30 +02:00
Daniel Gultsch f995965dea parse 0339 source groups from sdp 2020-04-20 15:57:30 +02:00
Daniel Gultsch 01a9a52990 show enable/disable video in video calls 2020-04-20 15:57:30 +02:00
Daniel Gultsch 445009c558 request camera permissions 2020-04-20 15:57:30 +02:00
Daniel Gultsch 5a20faaf0f show 'incoming video cal' notification 2020-04-20 15:57:30 +02:00
Daniel Gultsch d057ae3439 transmit media from proposal to actual session 2020-04-20 15:57:30 +02:00
Daniel Gultsch 8c273e7eee parse media from session proposal 2020-04-20 15:57:30 +02:00
Daniel Gultsch 1489dba44f release resource. stop caputuring when webrtc ends 2020-04-20 15:57:30 +02:00
Daniel Gultsch 339bdaea06 rudimentary video caputuring 2020-04-20 15:57:30 +02:00
Daniel Gultsch bfb9a6267a complete list of reasons 2020-04-20 15:57:30 +02:00
Daniel Gultsch dd42a6b850 don’t transition when calling endCall and session was already terminated 2020-04-20 15:57:30 +02:00
Daniel Gultsch 65b43661dd RtpConnection: synchronize all externally call methods to guard state transitions 2020-04-20 15:57:30 +02:00
Daniel Gultsch 172d2c693f depulicate 'propose's when doing mam catchup 2020-04-20 15:57:30 +02:00
Daniel Gultsch e16e0d895e cancle ongoing jingle sessions on xmpp rebind 2020-04-20 15:57:30 +02:00
Daniel Gultsch 493ca68464 add <rtcp-mux/> in description 2020-04-20 15:57:30 +02:00
Daniel Gultsch ef22071bd1 turn proximity wake lock and/off depending on speaker configuration 2020-04-20 15:57:30 +02:00
Daniel Gultsch 981aeaf264 make mute and speaker button work 2020-04-20 15:57:30 +02:00
Daniel Gultsch b924a63d01 copy audio manager from AppRTCDemo 2020-04-20 15:57:30 +02:00
Daniel Gultsch 5b98107e9a put jingle messages in MAM and parse call log during catchup 2020-04-20 15:57:30 +02:00
Daniel Gultsch 4be2309202 more conditions under which to print call log 2020-04-20 15:57:30 +02:00
Daniel Gultsch 3439f40411 show call log messages in conversation stream 2020-04-20 15:57:30 +02:00
Daniel Gultsch 1dc88f38ca avoid terminating twice 2020-04-20 15:57:30 +02:00
Daniel Gultsch 82f9a77777 be more conservative when parsing rtp content 2020-04-20 15:57:30 +02:00
Daniel Gultsch c9f7e174f7 use foreground service for ongoing call notification 2020-04-20 15:57:30 +02:00
Daniel Gultsch c6db651322 allow all jingle states to transition into terminated 2020-04-20 15:57:30 +02:00
Daniel Gultsch 5eea961155 improved strategy for ignoring self addressed jingle messages 2020-04-20 15:57:30 +02:00
Daniel Gultsch 7b382d2ba5 include more human readable text in application errors 2020-04-20 15:57:30 +02:00
Daniel Gultsch 07e671d7c3 do not offer jingle calls when using Tor 2020-04-20 15:57:30 +02:00
Daniel Gultsch 9d83981f2c respond with busy if there is anthor rtp session 2020-04-20 15:57:30 +02:00
Daniel Gultsch d19b5e0634 show notification during ongoing call 2020-04-20 15:57:30 +02:00
Daniel Gultsch 2e8b91665b improvements to RtpSessionActivity 2020-04-20 15:57:30 +02:00
Daniel Gultsch 0302eacac1 back button rejects or ends call 2020-04-20 15:57:30 +02:00
Daniel Gultsch 2ba84bd32e no need to be careful about Int parsing in session description; just fail 2020-04-20 15:57:30 +02:00
Daniel Gultsch 6884e427ef require dtls and ensure procceds get tracked 2020-04-20 15:57:30 +02:00
Daniel Gultsch 0661c1bd37 add state transitions for iq service-unavailable errors and timeouts 2020-04-20 15:57:30 +02:00
Daniel Gultsch 39e3791345 incude human readable text in some session-terminates 2020-04-20 15:57:30 +02:00
Daniel Gultsch 7749a7ce22 fixed rotation issues in RtpSessionActivity 2020-04-20 15:57:30 +02:00
Daniel Gultsch 268eedad89 proper iq tracing (handling of errors); responding to all iqs 2020-04-20 15:57:30 +02:00
Daniel Gultsch 15a2491d7b correctly parse turn server 2020-04-20 15:57:30 +02:00
Daniel Gultsch 845b3d8a0e properly parse transport info and apply ice candidates after direct init 2020-04-20 15:57:30 +02:00
Daniel Gultsch 3e5e4e813b reject call from proceed state; and deal with direct inits 2020-04-20 15:57:30 +02:00
Daniel Gultsch 0bf991d95c make jingle->sdp parsing fail on some obvious errors 2020-04-20 15:57:30 +02:00
Daniel Gultsch ca9b95fc9c discover stun server 2020-04-20 15:57:30 +02:00
Daniel Gultsch 859bc0bef3 send and receive session terminates 2020-04-20 15:57:30 +02:00
Daniel Gultsch 00f273b0c0 show retry button after failed call 2020-04-20 15:57:30 +02:00
Daniel Gultsch f7d1e02d4b parse 'accept' messages 2020-04-20 15:57:30 +02:00
Daniel Gultsch 9edadc9835 process retract jingle messages 2020-04-20 15:57:30 +02:00
Daniel Gultsch a11d506bf0 support reject 2020-04-20 15:57:30 +02:00
Daniel Gultsch 7909a72d43 make retract jingle messages work 2020-04-20 15:57:30 +02:00
Daniel Gultsch e2f1cec2e5 prepare more state transitions 2020-04-20 15:57:30 +02:00
Daniel Gultsch ccfc55e9b6 show proper notification on incoming call 2020-04-20 15:57:30 +02:00
Daniel Gultsch 0e88b56eb4 display status information in ui 2020-04-20 15:57:30 +02:00
Daniel Gultsch a9a35fb74b show status in RtpSessionActivity 2020-04-20 15:57:30 +02:00
Daniel Gultsch f8c0328416 dummy Jingle activity 2020-04-20 15:57:30 +02:00
Daniel Gultsch 22c755c5ce implement session accept 2020-04-20 15:57:30 +02:00
Daniel Gultsch 9dfa9df790 implement sending of session-accept 2020-04-20 15:57:30 +02:00
Daniel Gultsch ac9a1a773e receive candidates/transport-info 2020-04-20 15:57:30 +02:00
Daniel Gultsch 885ec0febe a couple of bug fixes for SessionDescription.toString() 2020-04-20 15:57:30 +02:00
Daniel Gultsch f264ef9f8b create sdp string and set on peer connection 2020-04-20 15:57:30 +02:00
Daniel Gultsch b1c0e93b34 rudimentary rtpmap to session converter 2020-04-20 15:57:30 +02:00
Daniel Gultsch 2591a96945 sdp candidate to transport-info 2020-04-20 15:57:30 +02:00
Daniel Gultsch 4d70855b4c sdp to ice transport conversion 2020-04-20 15:57:30 +02:00
Daniel Gultsch b44a3aeac6 parse sdp to jingle (yet w/o transport) 2020-04-20 15:57:30 +02:00
Daniel Gultsch ef51ec2c1d create objects for ssma (xep-0339) 2020-04-20 15:57:30 +02:00
Daniel Gultsch 28ead10ca4 sdp media to description parsing 2020-04-20 15:57:30 +02:00
Daniel Gultsch 18059345c8 payload-type and rtp-hdrext sdp parsing 2020-04-20 15:57:30 +02:00
Daniel Gultsch 5b1d86d67e dummy code to get sdp out of (non-working) libwebrtc 2020-04-20 15:57:30 +02:00
Daniel Gultsch 3b857e6894 create temporary RtpSessionPropsoal as placeholder before we can create actual session 2020-04-20 15:57:30 +02:00
Daniel Gultsch e2e4390d51 untested sdp parser 2020-04-20 15:57:30 +02:00
Daniel Gultsch 766d1d603e show preliminary call button if contact supports it 2020-04-20 15:57:30 +02:00
Daniel Gultsch 4e13893662 create stub objects for most of what’s in description and transport 2020-04-20 15:57:30 +02:00
Daniel Gultsch 43cf1783a4 support multiple jingle contents 2020-04-20 15:57:30 +02:00
Daniel Gultsch b2aa0e3352 use final varible to mark initiator once connection object has been created 2020-04-20 15:57:30 +02:00
Daniel Gultsch 5b15348f13 process message inits 2020-04-20 15:57:30 +02:00
Daniel Gultsch 385692ea28 route jingle message inits 2020-04-20 15:57:30 +02:00
Daniel Gultsch a4acfb2a19 clean iq callback code in XmppConnection 2020-04-20 15:57:30 +02:00
Daniel Gultsch f9650b95d8 create stub JingleRTPConnection 2020-04-20 15:57:30 +02:00
Daniel Gultsch 963ddd11c2 refactor jingle code to use objects for TransportInfo 2020-04-20 15:57:29 +02:00
Daniel Gultsch eb22bd0499 create 'Description' object 2020-04-20 15:57:29 +02:00
Daniel Gultsch 7538e387ec fixed bug in ibb delivery introduced in earlier refactoring 2020-04-20 15:57:29 +02:00
Daniel Gultsch 34f42c73bc cleaned JinglePacket and Content element 2020-04-20 15:57:29 +02:00
Daniel Gultsch 23ebb6ae80 rename JingleConnection to JingleFileTransferConnection; use ID tuple to identify sessions 2020-04-20 15:57:29 +02:00
Daniel Gultsch d039c4870f support registration via pars tokens 2020-01-09 17:42:02 +01:00
Marc Schink cae124d93f createOutputStream(): allow to disable decryption 2019-12-20 19:17:55 +01:00
Daniel Gultsch a3d639747a fixups for last commit 2019-12-05 14:03:54 +01:00
Daniel Gultsch 8263fb73e9 jingle ibb: wait to receive ibb
previously we signalled succesfull file reception after receiving enough bytes on ibb;
however that causes us to race with the session-info file hash. now the recipient will wait for
<close/> and the sender will make sure to send the session-info before sending close.

closes #3500
2019-12-05 13:28:14 +01:00
Daniel Gultsch 79e174743e check if sender is in contact list before accepting jingle file 2019-11-09 22:58:02 +01:00
Daniel Gultsch f6724e405e allow jingle state transition for fallback after proxy failure 2019-11-09 09:31:35 +01:00
Daniel Gultsch 8e42d0d39c make jingle state transitions less error prone 2019-11-08 22:27:14 +01:00
Daniel Gultsch 4df8343b05 set autojoin=true after following invite 2019-10-07 09:51:03 +02:00
Daniel Gultsch f530e395ca bookmarks2. introduce #compat namespace 2019-10-07 09:37:12 +02:00
Daniel Gultsch f26e0720c6 support for purge and delete 2019-10-07 09:37:12 +02:00
Daniel Gultsch f1aa5f2cab support for delete bookmarks2 2019-10-07 09:37:12 +02:00
Daniel Gultsch 6923b2898c WIP Bookmarks 2 support 2019-10-07 09:37:12 +02:00
Daniel Gultsch 6155938623 show reason in error message 2019-10-05 22:14:38 +02:00
Daniel Gultsch d6835101b9 fixes for previous commit 2019-10-05 21:58:21 +02:00
Daniel Gultsch 7ce7a505a0 mark cancelled jingle ft as such on both sides
fixes #3554
2019-10-05 21:30:15 +02:00
Daniel Gultsch 6776603b90 fully read port in socks connection
incoming direct connections in receive mode wouldn’t clear the entire
destination from the input stream; thus adding a leading 0x00 to the file

fixes #3557
2019-10-03 20:47:31 +02:00
Daniel Gultsch 3d332f6f35 set shorter timeouts when using direct candidates 2019-10-03 09:37:01 +02:00
Daniel Gultsch f8bd4284a5 report not-acceptable on jingle errors 2019-10-01 11:31:15 +02:00
Daniel Gultsch d2d9bbe3da improved jingle debugging 2019-09-29 13:32:45 +02:00
Daniel Gultsch ed46d12115 close correct socket after faulty jingle socks connection 2019-09-20 10:00:57 +02:00
Daniel Gultsch 9bf5fb98ac show language in message bubble if multiple language variants were received
XML and by inheritence XMPP has the feature of transmitting multiple language
variants for the same content. This can be really useful if, for example, you
are talking to an automated system. A chat bot could greet you in your own
language.

On the wire this will usually look like this:

```xml
<message to="you">
  <body>Good morning</body>
  <body xml:lang="de">Guten Morgen</body>
</message>
```

However receiving such a message in a group chat can be very confusing and
potentially dangerous if the sender puts conflicting information in there and
different people get shown different strings.

Disabeling support for localization entirely isn’t an ideal solution as on
principle it is still a good feature; and other clients might still show a
localization even if Conversations would always show the default language.

So instead Conversations now shows the displayed language in a corner of the
message bubble if more than one translation has been received.

If multiple languages are received Conversations will attempt to find one in
the language the operating system is set to. If no such translation can be
found it will attempt to display the English string.

If English can not be found either (for example a message that only has ru and
fr on a phone that is set to de) it will display what ever language came first.

Furthermore Conversations will discard (not show at all) messages with with
multiple bodies of the same language. (This is considered an invalid message)

The lanuage tag will not be shown if Conversations received a single body in
a language not understood by the user. (For example operating system set to
'de' and message received with one body in 'ru' will just display that body as
usual.)

As a guide line to the user: If you are reading a message where it is important
that this message is not interpreted differently by different people (like a
vote (+1 / -1) in a chat room) make sure it has *no* language tag.
2019-09-12 10:12:51 +02:00
Daniel Gultsch dd9777a6b7 do not include scope in ipv6 annoucment 2019-09-08 17:44:26 +02:00
Daniel Gultsch 9129c9acde JET uses plain text file size 2019-09-06 13:11:37 +02:00
Daniel Gultsch 0e1c26c569 do not include link local in direct candidates 2019-09-05 13:17:45 +02:00
Daniel Gultsch 571c29f92a make Tor connections work with direct TLS 2019-09-05 12:08:58 +02:00
Daniel Gultsch 7ec1b443ab implemented support for for jingle encrypted transports (XEP-0396) 2019-09-04 16:14:01 +02:00
Daniel Gultsch ff4d127b6f use higher priority for proxy on receiving end 2019-09-02 08:51:50 +02:00