summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@gmail.com>2010-07-12 18:38:40 +0200
committerXavier Claessens <xclaesse@gmail.com>2010-07-12 18:38:40 +0200
commit6e0592f2ef162383dcc35d1370540e5edde47ce7 (patch)
tree1de5337832542fddc130ef0e06711c332bb8e9a9 /src
parentdd350e1e0b62b4d46a41ef712670652c1c41c5e5 (diff)
TpSimpleHandler gives channels that are already prepared
Diffstat (limited to 'src')
-rw-r--r--src/client.c11
-rw-r--r--src/service.c44
2 files changed, 13 insertions, 42 deletions
diff --git a/src/client.c b/src/client.c
index cc7fd7e..13db5fb 100644
--- a/src/client.c
+++ b/src/client.c
@@ -159,11 +159,8 @@ offer_tube_cb (TpChannel *channel,
}
static void
-channel_prepare_cb (GObject *object,
- GAsyncResult *res,
- gpointer user_data)
+handle_channel (TpChannel *channel)
{
- TpChannel *channel = TP_CHANNEL (object);
gchar *dir;
GSocketListener *listener = NULL;
GSocket *socket = NULL;
@@ -172,9 +169,6 @@ channel_prepare_cb (GObject *object,
GHashTable *parameters;
GError *error = NULL;
- if (!tp_proxy_prepare_finish (TP_PROXY (channel), res, &error))
- goto OUT;
-
/* We are client side, but we have to offer a socket... So we offer an unix
* socket on which the service side can connect. We also create an IPv4 socket
* on which the ssh client can connect. When both sockets are connected,
@@ -249,8 +243,7 @@ got_channel_cb (TpSimpleHandler *handler,
TP_IFACE_CHANNEL_TYPE_STREAM_TUBE))
continue;
- tp_proxy_prepare_async (TP_PROXY (channel), NULL,
- channel_prepare_cb, NULL);
+ handle_channel (channel);
}
tp_handle_channels_context_accept (context);
diff --git a/src/service.c b/src/service.c
index 24fc8d9..5c676d4 100644
--- a/src/service.c
+++ b/src/service.c
@@ -114,36 +114,6 @@ OUT:
}
static void
-channel_prepare_cb (GObject *object,
- GAsyncResult *res,
- gpointer user_data)
-{
- TpChannel *channel = TP_CHANNEL (object);
- GHashTable *parameters;
- GValue value = { 0, };
- GError *error = NULL;
-
- if (!tp_proxy_prepare_finish (TP_PROXY (channel), res, &error))
- {
- throw_error (error);
- g_clear_error (&error);
- return;
- }
-
- /* FIXME: Those are dummy values, tp-glib crash if NULL is passed */
- parameters = g_hash_table_new (NULL, NULL);
- g_value_init (&value, G_TYPE_STRING);
-
- tp_cli_channel_type_stream_tube_call_accept (channel, -1,
- TP_SOCKET_ADDRESS_TYPE_UNIX,
- TP_SOCKET_ACCESS_CONTROL_LOCALHOST, &value,
- accept_tube_cb, NULL, NULL, NULL);
-
- g_hash_table_unref (parameters);
- g_value_reset (&value);
-}
-
-static void
got_channel_cb (TpSimpleHandler *handler,
TpAccount *account,
TpConnection *connection,
@@ -153,8 +123,12 @@ got_channel_cb (TpSimpleHandler *handler,
TpHandleChannelsContext *context,
gpointer user_data)
{
+ GValue value = { 0, };
GList *l;
+ /* FIXME: Dummy value because passing NULL makes tp-glib crash */
+ g_value_init (&value, G_TYPE_STRING);
+
for (l = channels; l != NULL; l = l->next)
{
TpChannel *channel = l->data;
@@ -165,11 +139,15 @@ got_channel_cb (TpSimpleHandler *handler,
n_sessions++;
- tp_proxy_prepare_async (TP_PROXY (channel), NULL,
- channel_prepare_cb, NULL);
- }
+ tp_cli_channel_type_stream_tube_call_accept (channel, -1,
+ TP_SOCKET_ADDRESS_TYPE_UNIX,
+ TP_SOCKET_ACCESS_CONTROL_LOCALHOST, &value,
+ accept_tube_cb, NULL, NULL, NULL);
+ }
tp_handle_channels_context_accept (context);
+
+ g_value_reset (&value);
}
int