[empathy/gnome-2-30] dispatcher_connection_invalidated_cb: terminate pending requests



commit f2f939e82822df06bcf35914888d4cb6c1158d99
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Mon Apr 19 15:11:59 2010 +0200

    dispatcher_connection_invalidated_cb: terminate pending requests

 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 0f8474d..e6bb454 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);
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]