diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2010-04-19 21:11:59 +0800 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2010-04-19 21:11:59 +0800 |
commit | e35291afaace4f378dd34377cd976003735af47c (patch) | |
tree | 6d68a234f1f7c5dd4ab00f48a6f4f50f603b5ba3 | |
parent | e29d5a655b02386c615bef866f73ffec052ceba3 (diff) | |
download | gsoc2013-empathy-e35291afaace4f378dd34377cd976003735af47c.tar gsoc2013-empathy-e35291afaace4f378dd34377cd976003735af47c.tar.gz gsoc2013-empathy-e35291afaace4f378dd34377cd976003735af47c.tar.bz2 gsoc2013-empathy-e35291afaace4f378dd34377cd976003735af47c.tar.lz gsoc2013-empathy-e35291afaace4f378dd34377cd976003735af47c.tar.xz gsoc2013-empathy-e35291afaace4f378dd34377cd976003735af47c.tar.zst gsoc2013-empathy-e35291afaace4f378dd34377cd976003735af47c.zip |
dispatcher_connection_invalidated_cb: terminate pending requests
-rw-r--r-- | libempathy/empathy-dispatcher.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/libempathy/empathy-dispatcher.c b/libempathy/empathy-dispatcher.c index d0dbc6380..8d91928f6 100644 --- a/libempathy/empathy-dispatcher.c +++ b/libempathy/empathy-dispatcher.c @@ -335,8 +335,31 @@ dispatcher_connection_invalidated_cb (TpConnection *connection, EmpathyDispatcher *self) { EmpathyDispatcherPriv *priv = GET_PRIV (self); + ConnectionData *connection_data; DEBUG ("Error: %s", message); + + /* Terminate pending requests, if any */ + connection_data = g_hash_table_lookup (priv->connections, connection); + if (connection_data != NULL) + { + GList *l; + GError *error; + + error = g_error_new_literal (domain, code, message); + + for (l = connection_data->outstanding_requests; l != NULL; + l = g_list_next (l)) + { + DispatcherRequestData *request_data = l->data; + + if (request_data->cb != NULL) + request_data->cb (NULL, error, request_data->user_data); + } + + g_error_free (error); + } + g_hash_table_remove (priv->connections, connection); } |