diff options
author | Xavier Claessens <xclaesse@gmail.com> | 2010-07-12 18:38:40 +0200 |
---|---|---|
committer | Xavier Claessens <xclaesse@gmail.com> | 2010-07-12 18:38:40 +0200 |
commit | 6e0592f2ef162383dcc35d1370540e5edde47ce7 (patch) | |
tree | 1de5337832542fddc130ef0e06711c332bb8e9a9 /src | |
parent | dd350e1e0b62b4d46a41ef712670652c1c41c5e5 (diff) |
TpSimpleHandler gives channels that are already prepared
Diffstat (limited to 'src')
-rw-r--r-- | src/client.c | 11 | ||||
-rw-r--r-- | src/service.c | 44 |
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 |