Age | Commit message (Collapse) | Author | Files | Lines |
|
GSocket creates GSources to provide GInputStream and GOutputStream
objects. Interestingly, it doesn't set the GIOCondition on the GSource
to handle G_IO_NVAL (ie. your file descriptor is not valid anymore).
It means that if your trying to read asynchronously from the socket
while someone else closes the socket, you end with an GInputStream
that can never complete its asynchronous read operation because the
file descriptor isn't valid anymore but that isn't a condition to
dispatch the GSource and end the asynchronous read with an error.
Alternatively, this wakes up the gmainloop all the time => 100% cpu
consumption.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=64923
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
|
|
We need telepathy-glib 0.20 for telepathy-glib-dbus.h; in Debian
I added a patch to fall back to the old headers, but on master
we shouldn't bother.
telepathy-glib 0.20 needs GLib 2.32, so we might as well require
that too.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=64121
Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
|
|
Fixes fdo#65614
|
|
The iteration over the channel requests tokens accidentally used the
wrong variable, causing the same request token to be passed into tp-glib
all the time causing crashes..
|
|
|
|
|
|
|
|
|
|
I haven't fixed all instances, just the one touched by the interactive
TLS code.
|
|
While we're touching these lines anyway, they might as well be in
a slightly more Telepathic style.
|
|
GTask doesn't make the code any smaller, and this way even new Debian
stable can have it.
|
|
If we cancel the connect_async cancellable between the call to
g_task_return_pointer (which schedules an idle to call the callback) and
Connection calling connect_finish(), the socket_connection would
previously have leaked.
|
|
|
|
|
|
Without this, IDLE_TEST_VALGRIND doesn't work.
|
|
|
|
Previously, priv->conn was NULL until the TCP session was established,
so _iface_shut_down() would take the "no connection yet; call
_finish_shutdown_idle_func in an idle" path. But the TLS channel would
get closed (because the TLSManager listens for state changes to
Disconnected and closes all channels), causing the ServerConnection to
call the connect_async() callback and emit ::disconnected, and hence
finish shutting down the connection there. Then the idle would crash,
because it doesn't take a ref to the connection.
We should really cancel the connect_async() call in the new path in
_iface_shut_down() to cope with the case where we're still waiting for
the TCP connection to be established for some other reason. That, and a
test for that, will follow.
|
|
|
|
|
|
|
|
|
|
It was already weird that the reason was only used in the disconnected
case.
|
|
Previously, keepalives and unloading messages started as soon as the TCP
session is established: before even the PASS/NICK/USER messages have
been sent! (IdleServerConnection emits ::status-changed(CONNECTED)
before connect_async() finishes.) If a message had got into the queue
already, this would break the connection process.
|
|
This was incorrectly adapted from the Gabble code.
|
|
Don't let the TLS tests accept errors that wouldn't be accepted when
idle runs normally, instead implement minimal ServerTLSConnection in the
test which need it and add a minimal test for rejecting certificates.
|
|
With the pieces now in place, hook up the TLS channnel manager and pass
it to the server connection so it can request interactive certificate
checking.
|
|
To do interactive certificate verification with GTls one needs to block
in the accept-certificate signal handler, which practically means the
connection needs to be done in a seperate check. As a first step,
instead using _connect_to_host_async in the main thread use a GTask to
synchronously connect in a different thread instead.
|
|
Instead of server-tls-manager being a Wocky TLS manager add async API to
start the certificate verification on request and use a GTlsCertificate
to get the needed certificate information instead of WockyTLSsession.
|
|
Take the TLS channel handling code from Gabble and s/gabble/idle in
the various files, but no other changes
|
|
|
|
|
|
|
|
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=63810
Reviewed-by: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
|
|
Reviewed-by: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
|
|
Among other effects, this makes GLIB_VERSION_MIN_REQUIRED effective.
Reviewed-by: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
|
|
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=63119
|
|
|
|
Since some time ago, Idle has used GIO's TLS stuff; we should have
dropped this back then.
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
|
|
|
|
|
|
We don't want to risk some test timing out because it doesn't answer
PONGs, and having PINGs cluttering the debug log is not my cup of tea.
|
|
|
|
|
|
|
|
|
|
|
|
This fixes the issue where empathy-chat crashing means you get kicked
out of all your channels.
It's technically backwards-incompatible but empathy-chat has been using
RemoveMembers() to leave rooms for ages, and it's a pretty destructive
and annoying bug, so let's just get on with it.
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=24614
|
|
|
|
I don't think this new API is a net improvement over making
TpBaseChannel do the work of merging ->interfaces (which would involve
zero code changes in CMs, and none of this stupid boilerplate for
building a list of strings in every CM) but there we go.
|
|
This is a no-op right now, but it's the right thing to do.
|