diff --git a/obexd/client/session.c b/obexd/client/session.c
index 2d95997..8704a17 100644
--- a/obexd/client/session.c
+++ b/obexd/client/session.c
{
GwObexXfer *xfer;
struct stat st;
- int fd;
+ int fd, err;
if (session->obex == NULL)
return -ENOTCONN;
return 0;
}
- fd = open(filename, O_RDONLY);
- if (fd < 0)
- return -EIO;
+ session->transfer_path = register_transfer(session->conn, session);
+ if (session->transfer_path == NULL) {
+ err = -EINVAL;
+ goto fail;
+ }
- if (fstat(fd, &st) < 0) {
- close(fd);
- return -EIO;
+ fd = open(filename, O_RDONLY);
+ if (fd < 0) {
+ err = -EIO;
+ goto fail;
}
- session->transfer_path = register_transfer(session->conn, session);
- if (session->transfer_path == NULL) {
+ if (fstat(fd, &st) < 0) {
close(fd);
- return -EIO;
+ err = -EIO;
+ goto fail;
}
session->fd = fd;
xfer = gw_obex_put_async(session->obex, session->name, NULL,
session->size, -1, NULL);
- if (xfer == NULL)
- return -ENOTCONN;
+ if (xfer == NULL) {
+ err = -ENOTCONN;
+ goto error;
+ }
gw_obex_xfer_set_callback(xfer, put_xfer_progress, session);
session->agent_path, session->transfer_path, 0);
return 0;
+
+fail:
+ agent_notify_error(session->conn, session->agent_name,
+ session->agent_path, session->transfer_path,
+ "Could not open file for sending");
+
+ return err;
}
int session_pull(struct session_data *session,