diff options
Diffstat (limited to 'libempathy/empathy-tp-file.c')
-rw-r--r-- | libempathy/empathy-tp-file.c | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/libempathy/empathy-tp-file.c b/libempathy/empathy-tp-file.c index c64c0e2f8..0d1a47a39 100644 --- a/libempathy/empathy-tp-file.c +++ b/libempathy/empathy-tp-file.c @@ -621,7 +621,8 @@ _get_local_socket (EmpathyTpFile *tp_file) * EMP_FILE_TRANSFER_STATE_LOCAL_PENDING). */ void -empathy_tp_file_accept (EmpathyTpFile *tp_file) +empathy_tp_file_accept (EmpathyTpFile *tp_file, + guint64 offset) { EmpathyTpFilePriv *priv; GValue *address; @@ -641,11 +642,46 @@ empathy_tp_file_accept (EmpathyTpFile *tp_file) if (!emp_cli_channel_type_file_run_accept_file (TP_PROXY (priv->channel), -1, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST, - ¬hing, &address, &error, NULL)) + ¬hing, offset, &address, &error, NULL)) { DEBUG ("Accept error: %s", error ? error->message : "No message given"); g_clear_error (&error); + return; + } + + if (priv->unix_socket_path) + g_free (priv->unix_socket_path); + + priv->unix_socket_path = g_value_dup_string (address); + g_value_unset (address); + + DEBUG ("Got unix socket path: %s", priv->unix_socket_path); +} + +void +empathy_tp_file_offer (EmpathyTpFile *tp_file) +{ + EmpathyTpFilePriv *priv; + GValue *address; + GError *error = NULL; + GValue nothing = { 0 }; + + g_return_if_fail (EMPATHY_IS_TP_FILE (tp_file)); + + priv = GET_PRIV (tp_file); + + g_value_init (¬hing, G_TYPE_STRING); + g_value_set_string (¬hing, ""); + + if (!emp_cli_channel_type_file_run_offer_file (TP_PROXY (priv->channel), + -1, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST, + ¬hing, &address, &error, NULL)) + { + DEBUG ("OfferFile error: %s", + error ? error->message : "No message given"); + g_clear_error (&error); + return; } if (priv->unix_socket_path) |