diff --git a/obexd/client/transfer.c b/obexd/client/transfer.c
index 3cc96a7..eddf869 100644
--- a/obexd/client/transfer.c
+++ b/obexd/client/transfer.c
static const GDBusSignalTable obc_transfer_signals[] = {
{ GDBUS_SIGNAL("PropertyChanged",
GDBUS_ARGS({ "name", "s" }, { "value", "v" })) },
+ { GDBUS_SIGNAL("Complete", NULL) },
+ { GDBUS_SIGNAL("Error",
+ GDBUS_ARGS({ "code", "s" }, { "message", "s" })) },
{ }
};
transfer->progress_id = 0;
}
- if (err)
- goto done;
-
- transfer->size = transfer->transferred;
+ if (err == NULL) {
+ transfer->size = transfer->transferred;
+
+ if (transfer->path != NULL)
+ g_dbus_emit_signal(transfer->conn, transfer->path,
+ TRANSFER_INTERFACE, "Complete",
+ DBUS_TYPE_INVALID);
+ } else if (transfer->path != NULL) {
+ const char *code = "org.openobex.Error.Failed";
+
+ g_dbus_emit_signal(transfer->conn, transfer->path,
+ TRANSFER_INTERFACE, "Error",
+ DBUS_TYPE_STRING,
+ &code,
+ DBUS_TYPE_STRING,
+ &err->message,
+ DBUS_TYPE_INVALID);
+ }
-done:
if (callback)
callback->func(transfer, transfer->size, err, callback->data);
}