[telepathy-gabble/master] Set RemoteCredentials and emit RemoteCredentialsSet.

Mike Ruprecht mike.ruprecht at collabora.co.uk
Tue Dec 29 05:35:08 PST 2009


---
 src/call-stream-endpoint.c |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/src/call-stream-endpoint.c b/src/call-stream-endpoint.c
index 2afaadd..8f801e6 100644
--- a/src/call-stream-endpoint.c
+++ b/src/call-stream-endpoint.c
@@ -451,6 +451,36 @@ call_stream_endpoint_set_selected_candidate (
       g_boxed_copy (GABBLE_STRUCT_TYPE_CANDIDATE, candidate);
 
   gabble_svc_call_stream_endpoint_emit_candidate_selected (self, candidate);
+
+  if (self->priv->selected_candidate != NULL &&
+      self->priv->selected_candidate->n_values >= 4)
+    {
+      GValue *value = g_value_array_get_nth (
+          self->priv->selected_candidate, 3);
+      GHashTable *info = g_value_get_boxed (value);
+      const gchar *username, *password;
+
+      username = tp_asv_get_string (info, "Username");
+      password = tp_asv_get_string (info, "Password");
+
+      if ((username != NULL && username[0] != 0) ||
+          (password != NULL && password[0] != 0))
+        {
+          if (self->priv->remote_credentials != NULL)
+            g_boxed_free (dbus_g_type_get_struct ("GValueArray",
+                G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID),
+                self->priv->remote_credentials);
+
+          self->priv->remote_credentials = gabble_value_array_build (2,
+              G_TYPE_STRING, g_strdup (username),
+              G_TYPE_STRING, g_strdup (password),
+              G_TYPE_INVALID);
+
+          gabble_svc_call_stream_endpoint_emit_remote_credentials_set (self,
+              username, password);
+        }
+    }
+
   gabble_svc_call_stream_endpoint_return_from_set_selected_candidate (context);
   return;
 
-- 
1.5.6.5




More information about the telepathy-commits mailing list