diff --git a/obexd/client/ftp.c b/obexd/client/ftp.c
index 6fa4e85..bb180ba 100644
--- a/obexd/client/ftp.c
+++ b/obexd/client/ftp.c
GError *err = NULL;
DBusMessage *reply;
- transfer = obc_transfer_get("x-obex/folder-listing", NULL, NULL,
- NULL, 0, &err);
+ transfer = obc_transfer_get("x-obex/folder-listing", NULL, NULL, &err);
if (transfer == NULL)
goto fail;
return g_dbus_create_error(message,
"org.openobex.Error.InvalidArguments", NULL);
- transfer = obc_transfer_get(NULL, source_file, target_file, NULL, 0,
- &err);
+ transfer = obc_transfer_get(NULL, source_file, target_file, &err);
if (transfer == NULL)
goto fail;
"Invalid arguments in method call");
transfer = obc_transfer_put(NULL, targetfile, sourcefile, NULL, 0,
- NULL, 0, &err);
+ &err);
if (transfer == NULL)
goto fail;
diff --git a/obexd/client/manager.c b/obexd/client/manager.c
index 1f70f60..4099e6f 100644
--- a/obexd/client/manager.c
+++ b/obexd/client/manager.c
struct obc_transfer *transfer;
transfer = obc_transfer_put(NULL, basename, filename, NULL, 0,
- NULL, 0, NULL);
+ NULL);
g_free(basename);
if (transfer == NULL)
goto fail;
}
- pull = obc_transfer_get("text/x-vcard", NULL, data->filename, NULL, 0,
- &gerr);
+ pull = obc_transfer_get("text/x-vcard", NULL, data->filename, &gerr);
if (!obc_session_queue(session, pull, pull_complete_callback, data,
&gerr)) {
}
pull = obc_transfer_get("x-obex/capability", NULL, data->filename,
- NULL, 0, &gerr);
+ &gerr);
if (!obc_session_queue(session, pull, capabilities_complete_callback,
data, &gerr)) {
diff --git a/obexd/client/map.c b/obexd/client/map.c
index 3e6f237..fe6b460 100644
--- a/obexd/client/map.c
+++ b/obexd/client/map.c
GError *err = NULL;
DBusMessage *reply;
- transfer = obc_transfer_get("x-obex/folder-listing", NULL, NULL,
- NULL, 0, &err);
+ transfer = obc_transfer_get("x-obex/folder-listing", NULL, NULL, &err);
if (transfer == NULL)
goto fail;
dbus_message_iter_get_basic(&msg_iter, &folder);
- transfer = obc_transfer_get("x-bt/MAP-msg-listing", folder, NULL,
- NULL, 0, &err);
+ transfer = obc_transfer_get("x-bt/MAP-msg-listing", folder, NULL, &err);
if (transfer == NULL)
goto fail;
diff --git a/obexd/client/pbap.c b/obexd/client/pbap.c
index 92292c9..7970c8e 100644
--- a/obexd/client/pbap.c
+++ b/obexd/client/pbap.c
GError *err = NULL;
DBusMessage *reply;
+ transfer = obc_transfer_get("x-bt/phonebook", name, NULL, &err);
+ if (transfer == NULL)
+ goto fail;
+
apparam.filter_tag = FILTER_TAG;
apparam.filter_len = FILTER_LEN;
apparam.filter = GUINT64_TO_BE(filter);
request = pending_request_new(pbap, message);
- transfer = obc_transfer_get("x-bt/phonebook", name, NULL, &apparam,
- sizeof(apparam), &err);
- if (transfer == NULL)
- goto fail;
+ obc_transfer_set_params(transfer, &apparam, sizeof(apparam));
if (obc_session_queue(pbap->session, transfer, func, request, &err))
return NULL;
+ pending_request_free(request);
+
fail:
reply = g_dbus_create_error(message, "org.openobex.Error.Failed", "%s",
err->message);
g_error_free(err);
- pending_request_free(request);
return reply;
}
GError *err = NULL;
DBusMessage *reply;
+ transfer = obc_transfer_get("x-bt/vcard-listing", name, NULL, &err);
+ if (transfer == NULL)
+ goto fail;
+
/* trunc the searchval string if it's length exceed the max value of guint8 */
if (strlen(searchval) > 254)
searchval[255] = '\0';
(APPARAM_HDR_SIZE + SEARCHATTRIB_LEN) +
(APPARAM_HDR_SIZE + MAXLISTCOUNT_LEN) +
(APPARAM_HDR_SIZE + LISTSTARTOFFSET_LEN);
- apparam = g_try_malloc0(apparam_size);
- if (!apparam)
- return g_dbus_create_error(message,
- ERROR_INF ".Failed", "No Memory");
+ apparam = g_malloc0(apparam_size);
p = apparam;
request = pending_request_new(pbap, message);
- transfer = obc_transfer_get("x-bt/vcard-listing", name, NULL,
- apparam, apparam_size, &err);
+ obc_transfer_set_params(transfer, apparam, apparam_size);
g_free(apparam);
- if (transfer == NULL)
- goto fail;
if (obc_session_queue(pbap->session, transfer,
pull_vcard_listing_callback, request, &err))
return NULL;
+ pending_request_free(request);
+
fail:
reply = g_dbus_create_error(message, "org.openobex.Error.Failed", "%s",
err->message);
g_error_free(err);
- pending_request_free(request);
return reply;
}
return g_dbus_create_error(message,
ERROR_INF ".InvalidArguments", NULL);
+ transfer = obc_transfer_get("x-bt/vcard", name, NULL, &err);
+ if (transfer == NULL)
+ goto fail;
+
apparam.filter_tag = FILTER_TAG;
apparam.filter_len = FILTER_LEN;
apparam.filter = GUINT64_TO_BE(pbap->filter);
request = pending_request_new(pbap, message);
- transfer = obc_transfer_get("x-bt/vcard", name, NULL,
- &apparam, sizeof(apparam), &err);
- if (transfer == NULL)
- goto fail;
+ obc_transfer_set_params(transfer, &apparam, sizeof(apparam));
if (obc_session_queue(pbap->session, transfer, pull_phonebook_callback,
request, &err))
return NULL;
+ pending_request_free(request);
+
fail:
reply = g_dbus_create_error(message, "org.openobex.Error.Failed", "%s",
err->message);
g_error_free(err);
- pending_request_free(request);
return reply;
}
diff --git a/obexd/client/sync.c b/obexd/client/sync.c
index 3c376cc..843e17a 100644
--- a/obexd/client/sync.c
+++ b/obexd/client/sync.c
if (!sync->phonebook_path)
sync->phonebook_path = g_strdup("telecom/pb.vcf");
- transfer = obc_transfer_get("phonebook", sync->phonebook_path,
- NULL, NULL, 0, &err);
+ transfer = obc_transfer_get("phonebook", sync->phonebook_path, NULL,
+ &err);
if (transfer == NULL)
goto fail;
sync->phonebook_path = g_strdup("telecom/pb.vcf");
transfer = obc_transfer_put(NULL, sync->phonebook_path, NULL, buf,
- strlen(buf), NULL, 0, &err);
+ strlen(buf), &err);
if (transfer == NULL)
goto fail;
diff --git a/obexd/client/transfer.c b/obexd/client/transfer.c
index 37963c8..541fd2d 100644
--- a/obexd/client/transfer.c
+++ b/obexd/client/transfer.c
static struct obc_transfer *obc_transfer_create(guint8 op,
const char *filename,
const char *name,
- const char *type,
- const void *params,
- size_t psize)
+ const char *type)
{
struct obc_transfer *transfer;
transfer->name = g_strdup(name);
transfer->type = g_strdup(type);
- if (params != NULL) {
- transfer->params = g_new0(struct obc_transfer_params, 1);
- transfer->params->data = g_memdup(params, psize);
- transfer->params->size = psize;
- }
-
return transfer;
}
return TRUE;
}
-struct obc_transfer *obc_transfer_get(const char *type,
- const char *name,
- const char *filename,
- const void *params, size_t psize,
- GError **err)
+struct obc_transfer *obc_transfer_get(const char *type, const char *name,
+ const char *filename, GError **err)
{
struct obc_transfer *transfer;
int perr;
- transfer = obc_transfer_create(G_OBEX_OP_GET, filename, name, type,
- params, psize);
+ transfer = obc_transfer_create(G_OBEX_OP_GET, filename, name, type);
perr = transfer_open(transfer, O_WRONLY | O_CREAT | O_TRUNC, 0600, err);
if (perr < 0) {
return transfer;
}
-struct obc_transfer *obc_transfer_put(const char *type,
- const char *name,
+struct obc_transfer *obc_transfer_put(const char *type, const char *name,
const char *filename,
- const void *contents, size_t csize,
- const void *params, size_t psize,
+ const void *contents, size_t size,
GError **err)
{
struct obc_transfer *transfer;
struct stat st;
int perr;
- transfer = obc_transfer_create(G_OBEX_OP_PUT, filename, name, type,
- params, psize);
+ transfer = obc_transfer_create(G_OBEX_OP_PUT, filename, name, type);
if (contents != NULL) {
ssize_t w;
if (!transfer_open(transfer, O_RDWR, 0, err))
goto fail;
- w = write(transfer->fd, contents, csize);
+ w = write(transfer->fd, contents, size);
if (w < 0) {
error("write(): %s(%d)", strerror(errno), errno);
perr = -errno;
goto fail;
- } else if ((size_t) w != csize) {
+ } else if ((size_t) w != size) {
error("Unable to write all contents to file");
perr = -EFAULT;
goto fail;
return transfer->op;
}
+void obc_transfer_set_params(struct obc_transfer *transfer,
+ const void *data, size_t size)
+{
+ if (transfer->params != NULL) {
+ g_free(transfer->params->data);
+ g_free(transfer->params);
+ }
+
+ if (data == NULL)
+ return;
+
+ transfer->params = g_new0(struct obc_transfer_params, 1);
+ transfer->params->data = g_memdup(data, size);
+ transfer->params->size = size;
+}
+
const void *obc_transfer_get_params(struct obc_transfer *transfer, size_t *size)
{
if (transfer->params == NULL)
diff --git a/obexd/client/transfer.h b/obexd/client/transfer.h
index 94bb800..bf40a4c 100644
--- a/obexd/client/transfer.h
+++ b/obexd/client/transfer.h
gint64 transferred, GError *err,
void *user_data);
-struct obc_transfer *obc_transfer_get(const char *type,
- const char *name,
+struct obc_transfer *obc_transfer_get(const char *type, const char *name,
+ const char *filename, GError **err);
+struct obc_transfer *obc_transfer_put(const char *type, const char *name,
const char *filename,
- const void *params, size_t psize,
- GError **err);
-struct obc_transfer *obc_transfer_put(const char *type,
- const char *name,
- const char *filename,
- const void *contents, size_t csize,
- const void *params, size_t psize,
+ const void *contents, size_t size,
GError **err);
gboolean obc_transfer_register(struct obc_transfer *transfer,
GError **err);
guint8 obc_transfer_get_operation(struct obc_transfer *transfer);
+void obc_transfer_set_params(struct obc_transfer *transfer,
+ const void *data, size_t size);
const void *obc_transfer_get_params(struct obc_transfer *transfer,
size_t *size);
int obc_transfer_get_contents(struct obc_transfer *transfer, char **contents,