Diff between 5c2632935848539a7943743c575879fc2009250f and 2ec536a9e803f6f02aba29863aa5d5cba7add59f

Changed Files

File Additions Deletions Status
obexd/client/session.c +8 -3 modified

Full Patch

diff --git a/obexd/client/session.c b/obexd/client/session.c
index d0989df..12d195c 100644
--- a/obexd/client/session.c
+++ b/obexd/client/session.c
@@ -834,7 +834,6 @@ static void get_xfer_progress(GwObexXfer *xfer, gpointer user_data)
 	gint bsize, bread, err = 0;
 	gboolean ret;
 
-	/* FIXME: Check buffer overflow */
 	bsize = sizeof(session->buffer) - session->filled;
 	ret = gw_obex_xfer_read(xfer, session->buffer + session->filled,
 					bsize, &bread, &err);
@@ -866,13 +865,19 @@ static void get_xfer_progress(GwObexXfer *xfer, gpointer user_data)
 	if (session->size == 0)
 		session->size = gw_obex_xfer_object_size(xfer);
 
-	if (bread == session->size)
+	if (session->fd > 0) {
+		write(session->fd, session->buffer, bread);
+		session->filled = 0;
+	}
+
+	if (session->transferred == session->size)
 		goto complete;
 
 	gw_obex_xfer_flush(xfer, NULL);
 
 	agent_notify_progress(session->conn, session->agent_name,
-			session->agent_path, session->transfer_path, 0);
+			session->agent_path, session->transfer_path,
+			session->transferred);
 
 	return;