summaryrefslogtreecommitdiff
path: root/client/session.c
diff options
context:
space:
mode:
authorMikel Astiz <mikel.astiz@bmw-carit.de>2012-05-04 14:39:35 +0200
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2012-05-14 11:22:04 +0300
commitd1ea68e3de04734545e83b572fef4ca9c61b15e1 (patch)
tree729a7aaa5d84606b51964541227203dec939853b /client/session.c
parent5ac500aeff9e6978eea855476c69e3d0e7e2b71a (diff)
downloadobexd-d1ea68e3de04734545e83b572fef4ca9c61b15e1.tar.gz
client: Transfer API splits create and register
The transfer-creating functions (obc_transfer_get and obc_transfer_put) no longer register the transfer automatically. This separation makes it possible that the modules would create the transfers and then pass the object to the session, which would be responsible for the registration.
Diffstat (limited to 'client/session.c')
-rw-r--r--client/session.c33
1 files changed, 15 insertions, 18 deletions
diff --git a/client/session.c b/client/session.c
index 3a8807b..e9993c8 100644
--- a/client/session.c
+++ b/client/session.c
@@ -751,8 +751,19 @@ static guint session_request(struct obc_session *session,
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,
@@ -953,7 +964,6 @@ guint obc_session_get(struct obc_session *session, const char *type,
{
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,
@@ -968,13 +978,7 @@ guint obc_session_get(struct obc_session *session, const char *type,
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);
@@ -990,7 +994,6 @@ guint obc_session_send(struct obc_session *session, const char *filename,
const char *name, GError **err)
{
struct obc_transfer *transfer;
- const char *agent;
if (session->obex == NULL) {
g_set_error(err, OBEX_IO_ERROR, -ENOTCONN,
@@ -998,10 +1001,7 @@ guint obc_session_send(struct obc_session *session, const char *filename,
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;
@@ -1051,7 +1051,6 @@ guint obc_session_put(struct obc_session *session, const char *contents,
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,
@@ -1059,10 +1058,8 @@ guint obc_session_put(struct obc_session *session, const char *contents,
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;