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
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);
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;