diff --git a/obexd/src/obex.c b/obexd/src/obex.c
index 1b89385..3834e06 100644
--- a/obexd/src/obex.c
+++ b/obexd/src/obex.c
os = OBEX_GetUserData(obex);
- /* Got an error during a transfer. */
- if (os->fd >= 0)
- emit_transfer_completed(os->cid, os->offset == os->size);
+ if (os->target == NULL) {
+ /* Got an error during a transfer. */
+ if (os->fd >= 0)
+ emit_transfer_completed(os->cid,
+ os->offset == os->size);
- /* FIXME: SessionRemoved/TransferCompleted signal? */
- unregister_transfer(os->cid);
+ unregister_transfer(os->cid);
+ } else {
+ emit_session_removed(os->cid);
+ unregister_session(os->cid);
+ }
obex_session_free(os);