diff --git a/obexd/client/main.c b/obexd/client/main.c
index ce55227..e20eafc 100644
--- a/obexd/client/main.c
+++ b/obexd/client/main.c
session_set_agent(session, data->sender, data->agent);
for (i = 0; i < data->files->len; i++) {
- if (session_send(session,
- g_ptr_array_index(data->files, i)) < 0)
+ const gchar *filename = g_ptr_array_index(data->files, i);
+
+ if (session_send(session, filename,
+ g_path_get_basename(filename)) < 0)
break;
}
diff --git a/obexd/client/session.c b/obexd/client/session.c
index 47902fc..4953c0a 100644
--- a/obexd/client/session.c
+++ b/obexd/client/session.c
filename = g_ptr_array_index(session->pending, 0);
g_ptr_array_remove(session->pending, filename);
- session_send(session, filename);
+ session_send(session, filename, g_path_get_basename(filename));
g_free(filename);
}
session->path = NULL;
}
- session_send(session, filename);
+ session_send(session, filename, g_path_get_basename(filename));
g_free(filename);
}
session_unref(session);
}
-int session_send(struct session_data *session, const char *filename)
+int session_send(struct session_data *session, const char *filename,
+ const char *targetname)
{
GwObexXfer *xfer;
DBusMessage *message;
session->size = st.st_size;
session->transferred = 0;
session->filename = g_strdup(filename);
+ session->name = g_strdup(targetname);
- session->name = g_path_get_basename(filename);
- session->path = g_strdup_printf("%s/transfer%ju",
+ if (session->path == NULL) {
+ session->path = g_strdup_printf("%s/transfer%ju",
TRANSFER_BASEPATH, counter++);
if (g_dbus_register_interface(session->conn, session->path,
diff --git a/obexd/client/session.h b/obexd/client/session.h
index e78e533..dbef86c 100644
--- a/obexd/client/session.h
+++ b/obexd/client/session.h
session_callback_t function, void *user_data);
int session_set_agent(struct session_data *session, const char *name,
const char *path);
-int session_send(struct session_data *session, const char *filename);
+int session_send(struct session_data *session, const char *filename,
+ const char *remotename);
int session_pull(struct session_data *session,
const char *type, const char *filename,
session_callback_t function, void *user_data);