diff --git a/obexd/client/session.c b/obexd/client/session.c
index 3a8807b..e9993c8 100644
--- a/obexd/client/session.c
+++ b/obexd/client/session.c
void *data, GError **err)
{
struct pending_request *p;
+ const char *agent;
int perr;
+ if (session->agent)
+ agent = obc_agent_get_name(session->agent);
+ else
+ agent = NULL;
+
+ if (!obc_transfer_register(transfer, session->conn, agent, err)) {
+ obc_transfer_unregister(transfer);
+ return 0;
+ }
+
obc_transfer_set_callback(transfer, transfer_progress, session);
p = pending_request_new(session, transfer, session_start_transfer,
{
struct obc_transfer *transfer;
struct obc_transfer_params *params = NULL;
- const char *agent;
if (session->obex == NULL) {
g_set_error(err, OBEX_IO_ERROR, -ENOTCONN,
params->size = apparam_size;
}
- if (session->agent)
- agent = obc_agent_get_name(session->agent);
- else
- agent = NULL;
-
- transfer = obc_transfer_get(session->conn, agent, targetfile, name,
- type, params, err);
+ transfer = obc_transfer_get(targetfile, name, type, params, err);
if (transfer == NULL) {
if (params != NULL) {
g_free(params->data);
const char *name, GError **err)
{
struct obc_transfer *transfer;
- const char *agent;
if (session->obex == NULL) {
g_set_error(err, OBEX_IO_ERROR, -ENOTCONN,
return 0;
}
- agent = obc_agent_get_name(session->agent);
-
- transfer = obc_transfer_put(session->conn, agent, filename, name,
- NULL, NULL, 0, NULL, err);
+ transfer = obc_transfer_put(filename, name, NULL, NULL, 0, NULL, err);
if (transfer == NULL)
return 0;
size_t size, const char *name, GError **err)
{
struct obc_transfer *transfer;
- const char *agent;
if (session->obex == NULL) {
g_set_error(err, OBEX_IO_ERROR, -ENOTCONN,
return 0;
}
- agent = obc_agent_get_name(session->agent);
-
- transfer = obc_transfer_put(session->conn, agent, NULL, name, NULL,
- contents, size, NULL, err);
+ transfer = obc_transfer_put(NULL, name, NULL, contents, size, NULL,
+ err);
if (transfer == NULL)
return 0;
diff --git a/obexd/client/transfer.c b/obexd/client/transfer.c
index 21bd797..245ccff 100644
--- a/obexd/client/transfer.c
+++ b/obexd/client/transfer.c
return transfer;
}
-static gboolean obc_transfer_register(struct obc_transfer *transfer,
+gboolean obc_transfer_register(struct obc_transfer *transfer,
DBusConnection *conn,
const char *agent,
GError **err)
return TRUE;
}
-struct obc_transfer *obc_transfer_get(DBusConnection *conn,
- const char *agent,
- const char *filename,
+struct obc_transfer *obc_transfer_get(const char *filename,
const char *name,
const char *type,
struct obc_transfer_params *params,
transfer = obc_transfer_create(G_OBEX_OP_GET, filename, name, type);
- if (!obc_transfer_register(transfer, conn, agent, err)) {
- obc_transfer_free(transfer);
- return NULL;
- }
-
perr = transfer_open(transfer, O_WRONLY | O_CREAT | O_TRUNC, 0600, err);
if (perr < 0) {
obc_transfer_free(transfer);
return transfer;
}
-struct obc_transfer *obc_transfer_put(DBusConnection *conn,
- const char *agent,
- const char *filename,
+struct obc_transfer *obc_transfer_put(const char *filename,
const char *name,
const char *type,
const char *contents,
transfer = obc_transfer_create(G_OBEX_OP_PUT, filename, name, type);
- if (!obc_transfer_register(transfer, conn, agent, err)) {
- obc_transfer_free(transfer);
- return NULL;
- }
-
if (contents != NULL) {
ssize_t w;
diff --git a/obexd/client/transfer.h b/obexd/client/transfer.h
index 1b83d18..073b279 100644
--- a/obexd/client/transfer.h
+++ b/obexd/client/transfer.h
gint64 transferred, GError *err,
void *user_data);
-struct obc_transfer *obc_transfer_get(DBusConnection *conn,
- const char *agent,
- const char *filename,
+struct obc_transfer *obc_transfer_get(const char *filename,
const char *name,
const char *type,
struct obc_transfer_params *params,
GError **err);
-struct obc_transfer *obc_transfer_put(DBusConnection *conn,
- const char *agent,
- const char *filename,
+struct obc_transfer *obc_transfer_put(const char *filename,
const char *name,
const char *type,
const char *contents,
struct obc_transfer_params *params,
GError **err);
+gboolean obc_transfer_register(struct obc_transfer *transfer,
+ DBusConnection *conn,
+ const char *agent,
+ GError **err);
+
void obc_transfer_unregister(struct obc_transfer *transfer);
gboolean obc_transfer_set_callback(struct obc_transfer *transfer,