summaryrefslogtreecommitdiff
path: root/client/session.c
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2012-04-24 15:03:14 +0300
committerJohan Hedberg <johan.hedberg@intel.com>2012-04-24 15:47:28 +0300
commit76284b5cd333072a1745ae9bdc497681c46b3db8 (patch)
tree0a472aa1841b9a2370d0ccbe201899df72be75ed /client/session.c
parent1e5c379e39c3fe41c2efd40161c4f6c909f8340b (diff)
downloadobexd-76284b5cd333072a1745ae9bdc497681c46b3db8.tar.gz
client: open file during transfer creation
This simplify the API a bit by not having to call obc_transfer_set_file to open the file. In addition to that split transfer creation/registration function so GET/PUT can have more specific logic and different paramenters.
Diffstat (limited to 'client/session.c')
-rw-r--r--client/session.c50
1 files changed, 25 insertions, 25 deletions
diff --git a/client/session.c b/client/session.c
index 306e2ba..7515ff0 100644
--- a/client/session.c
+++ b/client/session.c
@@ -661,6 +661,7 @@ static void session_request_reply(DBusPendingCall *call, gpointer user_data)
DBusMessage *reply = dbus_pending_call_steal_reply(call);
const char *name;
DBusError derr;
+ int err;
dbus_error_init(&derr);
if (dbus_set_error_from_message(&derr, reply)) {
@@ -685,13 +686,26 @@ static void session_request_reply(DBusPendingCall *call, gpointer user_data)
DBG("Agent.Request() reply: %s", name);
- if (strlen(name)) {
- if (obc_transfer_get_operation(transfer) == G_OBEX_OP_PUT)
- obc_transfer_set_name(transfer, name);
- else
- obc_transfer_set_filename(transfer, name);
+ if (strlen(name) == 0)
+ goto done;
+
+ if (obc_transfer_get_operation(transfer) == G_OBEX_OP_PUT) {
+ obc_transfer_set_name(transfer, name);
+ goto done;
+ }
+
+ err = obc_transfer_set_filename(transfer, name);
+ if (err < 0) {
+ GError *gerr = NULL;
+
+ g_set_error(&gerr, OBEX_IO_ERROR, err,
+ "Unable to set filename");
+ session_terminate_transfer(session, transfer, gerr);
+ g_clear_error(&gerr);
+ return;
}
+done:
if (p->auth_complete)
p->auth_complete(session, transfer);
@@ -956,8 +970,8 @@ int obc_session_get(struct obc_session *session, const char *type,
else
agent = NULL;
- transfer = obc_transfer_register(session->conn, agent, G_OBEX_OP_GET,
- targetfile, name, type, params);
+ transfer = obc_transfer_get(session->conn, agent, targetfile, name,
+ type, params);
if (transfer == NULL) {
if (params != NULL) {
g_free(params->data);
@@ -974,24 +988,17 @@ int obc_session_send(struct obc_session *session, const char *filename,
{
struct obc_transfer *transfer;
const char *agent;
- int err;
if (session->obex == NULL)
return -ENOTCONN;
agent = obc_agent_get_name(session->agent);
- transfer = obc_transfer_register(session->conn, agent, G_OBEX_OP_PUT,
- filename, name, NULL, NULL);
+ transfer = obc_transfer_put(session->conn, agent, filename, name,
+ NULL, NULL, 0, NULL);
if (transfer == NULL)
return -EINVAL;
- err = obc_transfer_set_file(transfer, NULL, 0);
- if (err < 0) {
- obc_transfer_unregister(transfer);
- return err;
- }
-
return session_request(session, transfer, NULL, NULL);
}
@@ -1038,24 +1045,17 @@ int obc_session_put(struct obc_session *session, const char *contents,
{
struct obc_transfer *transfer;
const char *agent;
- int err;
if (session->obex == NULL)
return -ENOTCONN;
agent = obc_agent_get_name(session->agent);
- transfer = obc_transfer_register(session->conn, agent, G_OBEX_OP_PUT,
- NULL, name, NULL, NULL);
+ transfer = obc_transfer_put(session->conn, agent, NULL, name, NULL,
+ contents, size, NULL);
if (transfer == NULL)
return -EIO;
- err = obc_transfer_set_file(transfer, contents, size);
- if (err < 0) {
- obc_transfer_unregister(transfer);
- return err;
- }
-
return session_request(session, transfer, NULL, NULL);
}