David Woodhouse [Fri, 4 May 2018 11:30:22 +0000 (12:30 +0100)]
Trust Amazon certificates
Some of the media endpoints have certificates issued by the Amazon internal
CA. Trust them. Might as well have the Amazon public trust roots too, just
for good measure.
Isaac Jurado [Tue, 1 May 2018 14:50:37 +0000 (16:50 +0200)]
Do not automatically connect upon object construction.
chime_connection_new() automatically calls chime_connection_connect(), but if
the session token is not given, there hasn't been any chance to connect the
"authenticate" signal in order to properly transfer control through the code.
Instead of implicitly connecting upon object creation, let the caller do it
explicitly. The purple plugin is also changed to conform to that.
Isaac Jurado [Tue, 1 May 2018 11:02:17 +0000 (13:02 +0200)]
Refactor the login/sign-in code.
To conform with the backend/frontend split of this package, the sign in code has
been refactored by separtaing the screen scrapping parts from the front
end (user interaction) parts.
The split between sign in provider types is no more, so all the login dirty code
lives together in chime/chime-signin.c.
Also, a new utility (chime-get-token) has been incorporated to ease the debug of
the sign in process, and also as an easy way to obtain a session token for Chime
bot developers.
David Woodhouse [Tue, 1 May 2018 08:50:50 +0000 (09:50 +0100)]
Validate DTLS server certificate
Hm, it really shouldn't be so easy to forget this. There really is a case
to be made that you should get GNUTLS_E_CERTIFICATE_VERIFICATION_ERROR by
default *unless* you set up verification. Fail safe, not open.
David Woodhouse [Sat, 14 Apr 2018 22:07:36 +0000 (00:07 +0200)]
Basic implementation of outbound screen share
We're stilling Pidgin it's outbound video for now, so I've been testing
with videotestsrc. Need to teach Pidgin about a screen share media type
and do the "choose monitor / window" UI bits there where they belong.
Andrew Jorgensen [Fri, 13 Apr 2018 17:38:07 +0000 (10:38 -0700)]
Initial RPM spec file
This makes the assumption that the package will be called pidgin-chime because
this is what it's called in `configure.ac`.
The main package includes the pidgin icon, rather than putting it in a separate
package, because it's not harmful to put unused icons on the filesystem in the
case where someone is using libpurple but not pidgin.
The evolution plugin is put into a separate package to minimize dependencies in
the main package. Can be built --without evolution.
Andrew Jorgensen [Fri, 13 Apr 2018 17:37:47 +0000 (10:37 -0700)]
Make evolution conditional in configure (enabled by default)
I also removed evolution libraries from fs-app-transmitter. I can't tell why
that was done, and it links fine without it. IIRC in practice `-no-undefined`
doesn't work in autotools packages because it's a positional argument and some
other tools sorts the arguments.
David Woodhouse [Fri, 6 Apr 2018 09:42:36 +0000 (10:42 +0100)]
Switch to live mode for appsrc
The input data should be handled as a live stream. Maybe this will
help deal with the case where we get incoming silence on some calls when
Pidgin has been running for a while.
David Woodhouse [Thu, 5 Apr 2018 11:18:38 +0000 (12:18 +0100)]
Cancel conversation list update properly on connection close
There was race condition with close, and if an update was pending there
was a use-after-free of the connection object. Fix that the same way as
we do for the joinable meetings dialog.
David Woodhouse [Thu, 22 Mar 2018 23:57:21 +0000 (23:57 +0000)]
Handle transient buddies with NO_SAVE flag
We want libpurple to be able to create transient buddies which we can use
purely as a vehicle for conveying presence/name/photo information for an
IM window.
David Woodhouse [Fri, 16 Mar 2018 21:21:03 +0000 (21:21 +0000)]
Subscribe to presence channel only when availability first fetched
To avoid subscribing to presence of *all* members of chat rooms, only
subscribe once their availability is first requested. This should help
to avoid us getting kicked off when the rate limit kicks in.
David Woodhouse [Wed, 7 Mar 2018 20:32:03 +0000 (20:32 +0000)]
More audio cleanup
Fix up lifetime handling on the appsrc/appsink and uninstall the callbacks
when we're done.
Also fix up the timer handling for empty outbound packets. When the system
was slow we were sending 'muted' RT packets in between the audio frames,
so set the timers *only* when we're actually muted. If we fail to send
audio at other times, let it just do a red mic like it should.
David Woodhouse [Wed, 7 Mar 2018 16:33:38 +0000 (16:33 +0000)]
Slight cleanup for call media handling
The call is connecting before do_join_chat() is ever called, which means we
may miss some of the early state transitions. Try to cope with that.
We probably want to drive the call connection directly from chat code in
the end, but this will do for now.
Also decouple the media setup and connection; the call window in Pidgin
should now say 'Calling...' and then 'Call in progress' once it's connected.
Hopefully this helps to deal with some of the issues with slow call setup.
I *was* able to reproduce the ever-slower call connection but now I can't.
Not sure if that's just coincidence...
David Woodhouse [Wed, 7 Mar 2018 12:31:41 +0000 (12:31 +0000)]
Clean up fetch_presences() idle handling
Properly avoid re-running the function when it's already scheduled, and
ensure we cancel it when we need to too. Also ensure that disposed contacts
are removed from the 'contacts_needed' list.