Diff between e3567941804af0864a131786f6cec1ee0687e6dc and 23e6e28fb007fa922a1123ea3225b3d0aefc9c11

Changed Files

File Additions Deletions Status
obexd/client/main.c +4 -2 modified
obexd/client/session.c +7 -5 modified
obexd/client/session.h +2 -1 modified

Full Patch

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
@@ -73,8 +73,10 @@ static void create_callback(struct session_data *session, void *user_data)
 	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
@@ -451,7 +451,7 @@ static void abort_transfer(struct session_data *session)
 		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);
 	}
 
@@ -787,14 +787,15 @@ complete:
 			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;
@@ -823,9 +824,10 @@ int session_send(struct session_data *session, const char *filename)
 	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
@@ -60,7 +60,8 @@ int session_create(const char *source,
 				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);