+
+ if (ATK_IS_SOCKET (object) && atk_socket_is_occupied (ATK_SOCKET (object)) && i == 0)
+ {
+ AtkSocket *socket = ATK_SOCKET (object);
+ gchar *child_name, *child_path;
+ child_name = g_strdup (socket->embedded_plug_id);
+ child_path = g_utf8_strchr (child_name + 1, -1, ':');
+ if (child_path)
+ {
+ DBusMessage *reply;
+ DBusMessageIter iter, iter_socket;
+ *(child_path++) = '\0';
+ reply = dbus_message_new_method_return (message);
+ if (!reply)
+ return NULL;
+ dbus_message_iter_init_append (reply, &iter);
+ dbus_message_iter_open_container (&iter, DBUS_TYPE_STRUCT, NULL,
+ &iter_socket);
+ dbus_message_iter_append_basic (&iter_socket, DBUS_TYPE_STRING, &child_name);
+ dbus_message_iter_append_basic (&iter_socket, DBUS_TYPE_OBJECT_PATH, &child_path);
+ dbus_message_iter_close_container (&iter, &iter_socket);
+ return reply;
+ }
+ g_free (child_name);
+ }