diff --git a/obexd/client/session.c b/obexd/client/session.c
index 06c1561..9e463d8 100644
--- a/obexd/client/session.c
+++ b/obexd/client/session.c
struct callback_data {
struct session_data *session;
sdp_session_t *sdp;
- uint16_t uuid;
session_callback_t func;
void *data;
};
g_free(session->path);
g_free(session->name);
- g_free(session->target);
g_free(session->filename);
g_free(session->agent_name);
g_free(session->agent_path);
gpointer user_data)
{
struct callback_data *callback = user_data;
+ struct session_data *session = callback->session;
GwObex *obex;
- const char *uuid;
int fd, len;
if (cond & (G_IO_NVAL | G_IO_ERR))
fd = g_io_channel_unix_get_fd(io);
- switch (callback->uuid) {
- case OBEX_FILETRANS_SVCLASS_ID:
- uuid = FOLDER_BROWSING_UUID;
- len = 16;
- break;
- case OBEX_OBJPUSH_SVCLASS_ID:
- uuid = NULL;
- len = 0;
- break;
- }
-
- obex = gw_obex_setup_fd(fd, uuid, len, NULL, NULL);
+ len = (session->target ? 16 : 0);
+ obex = gw_obex_setup_fd(fd, session->target, len, NULL, NULL);
callback->session->sock = fd;
callback->session->obex = obex;
if (sdp_set_notify(callback->sdp, search_callback, callback) < 0)
goto failed;
- sdp_uuid16_create(&uuid, callback->uuid);
+ sdp_uuid16_create(&uuid, callback->session->uuid);
search = sdp_list_append(NULL, &uuid);
attrid = sdp_list_append(NULL, &range);
struct session_data *session;
struct callback_data *callback;
int err;
- uint16_t uuid;
if (destination == NULL)
return -EINVAL;
str2ba(destination, &session->dst);
if (target != NULL) {
- uuid = OBEX_FILETRANS_SVCLASS_ID;
- session->target = g_strdup(target);
+ session->uuid = OBEX_FILETRANS_SVCLASS_ID;
+ session->target = FOLDER_BROWSING_UUID;
} else
- uuid = OBEX_OBJPUSH_SVCLASS_ID;
+ session->uuid = OBEX_OBJPUSH_SVCLASS_ID;
callback = g_try_malloc0(sizeof(*callback));
if (callback == NULL) {
err = rfcomm_connect(&session->src, &session->dst,
session->channel, rfcomm_callback, callback);
} else {
- callback->uuid = uuid;
callback->sdp = service_connect(&session->src, &session->dst,
service_callback, callback);
err = (callback->sdp == NULL) ? -ENOMEM : 0;
diff --git a/obexd/client/session.h b/obexd/client/session.h
index 39f74b8..e5f4889 100644
--- a/obexd/client/session.h
+++ b/obexd/client/session.h
bdaddr_t src;
bdaddr_t dst;
uint8_t channel;
- gchar *target;
+ const char *target; /* OBEX Target UUID */
+ uint16_t uuid; /* Bluetooth Service Class */
gchar *name;
gchar *path;
int sock;