Age | Commit message (Collapse) | Author | Files | Lines |
|
https://bugs.freedesktop.org/show_bug.cgi?id=69311
|
|
https://bugs.freedesktop.org/show_bug.cgi?id=69311
|
|
tp_handle_{set,get}_qdata has been deprecated.
https://bugs.freedesktop.org/show_bug.cgi?id=64122
|
|
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=64923
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
|
|
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>
|
|
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.
|
|
|
|
|
|
|
|
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>
|
|
Among other effects, this makes GLIB_VERSION_MIN_REQUIRED effective.
Reviewed-by: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
|
|
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>
|
|
|
|
|
|
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.
|
|
This is equivalent but neater.
|
|
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=56589
|
|
Jonny wanted this to be clearer on
<https://bugs.freedesktop.org/show_bug.cgi?id=56589#c1>.
|
|
On <https://bugs.freedesktop.org/show_bug.cgi?id=49163>, Alban Browaeys
described a situation where idle_server_connection_send_async() would
call its callback synchronously, due to a bug in GLib. While I think
that bug is fixed, we can be more defensive against this by initializing
priv->msg_sending to TRUE before calling
idle_server_connection_send_async() rather than after. That way, if the
_msg_queue_timeout_ready() callback is called synchronously (due to a
bug), Idle won't get stuck thinking it's sending a message.
|
|
I don't know which servers don't support PING, but irssi does this, so I
figure we may as well do it too.
I tested this by making Idle send and check for PNNING, which Freenode
doesn't support. It's not obvious how to write a good automated test for
this.
|
|
Previously, if the network connection had gone away _force_disconnect()
would not actually make the connection die any faster, because
g_io_stream_close_async() waits for a reply by default.
But by pulling the same trick with a cancelled cancellable as is used
for ping timeouts, we can fix this.
I tested this by:
* Connecting to a server (with keepalive-interval=0 to ensure that
doesn't interfere).
* Pulling out my network cable (breaking the connection) but leaving my
wireless connection up.
* calling Disconnect() on the connection.
Before, the connection would never finish disconnecting; after, the
_force_disconnect() timeout actually does something useful and the
connection dies properly.
|
|
|
|
Previously we'd just send out a PING into the æther every n seconds, and
pay no attention to whether we ever got an answer. So it was perfectly
possible for the connection to just sit there until the TCP timeout
kicks in, which I think is a matter of hours by default.
With this patch, if we haven't heard a PONG 3 keepalive-intervals after
sending a PING, Idle throws its toys out of the pram.
This has been tested as follows:
* Put my laptop on a wired and wireless network simultaneously.
* Connect to an IRC server. (The wired network is used.)
* Pull the network cable out. Idle is too stupid to realise the link it
was using is gone, and because we're still ostensibly online, nothing
tells it to disconnect.
* Wait keepalive-interval * 4, and watch the connection get
disconnected.
It works both with a direct connection to Freenode, and with a
connection over an SSH tunnel to irssi-proxy.
|
|
|
|
|
|
|
|
tp_channel_manager_asv_has_unknown_properties() takes care of excluding
extra properties for us.
|
|
|
|
Whoops.
|
|
|
|
|
|
https://bugs.freedesktop.org/show_bug.cgi?id=30741
|