diff --git a/obexd/plugins/ftp.c b/obexd/plugins/ftp.c
index ce5ee23..7b768d1 100644
--- a/obexd/plugins/ftp.c
+++ b/obexd/plugins/ftp.c
.channel = PCSUITE_CHANNEL,
.record = PCSUITE_RECORD,
.target = FTP_TARGET,
+ .target_size = TARGET_SIZE,
.connect = ftp_connect,
.get = ftp_get,
.put = ftp_put,
.channel = FTP_CHANNEL,
.record = FTP_RECORD,
.target = FTP_TARGET,
+ .target_size = TARGET_SIZE,
.connect = ftp_connect,
.get = ftp_get,
.put = ftp_put,
diff --git a/obexd/plugins/pbap.c b/obexd/plugins/pbap.c
index 340fb06..be8a287 100644
--- a/obexd/plugins/pbap.c
+++ b/obexd/plugins/pbap.c
.channel = PBAP_CHANNEL,
.record = PBAP_RECORD,
.target = PBAP_TARGET,
+ .target_size = TARGET_SIZE,
.connect = pbap_connect,
.get = pbap_get,
.setpath = pbap_setpath,
diff --git a/obexd/src/obex.c b/obexd/src/obex.c
index 8d85aa3..57a2ba1 100644
--- a/obexd/src/obex.c
+++ b/obexd/src/obex.c
os->cid = ++cid;
while (OBEX_ObjectGetNextHeader(obex, obj, &hi, &hd, &hlen)) {
- if (hi != OBEX_HDR_TARGET || hlen != TARGET_SIZE)
+ if (hi != OBEX_HDR_TARGET)
continue;
- os->service = obex_service_driver_find(os->server->drivers, hd.bs);
+ os->service = obex_service_driver_find(os->server->drivers,
+ hd.bs, hlen);
break;
}
os = g_new0(struct obex_session, 1);
- os->service = obex_service_driver_find(server->drivers, NULL);
+ os->service = obex_service_driver_find(server->drivers, NULL, 0);
os->current_folder = g_strdup(server->folder);
os->server = server;
diff --git a/obexd/src/service.c b/obexd/src/service.c
index 2a5494d..3020acc 100644
--- a/obexd/src/service.c
+++ b/obexd/src/service.c
static GSList *drivers = NULL;
-struct obex_service_driver *obex_service_driver_find(GSList *list, const guint8 *target)
+struct obex_service_driver *obex_service_driver_find(GSList *list,
+ const guint8 *target, guint target_size)
{
GSList *l;
return driver;
if (driver->target && target &&
- memcmp(driver->target, target, TARGET_SIZE) == 0)
+ driver->target_size == target_size &&
+ memcmp(driver->target, target, target_size) == 0)
return driver;
}
diff --git a/obexd/src/service.h b/obexd/src/service.h
index 966256c..df12e91 100644
--- a/obexd/src/service.h
+++ b/obexd/src/service.h
guint16 service;
guint8 channel;
const guint8 *target;
+ guint target_size;
const gchar *record;
void (*connect) (obex_t *obex, obex_object_t *obj);
void (*progress) (obex_t *obex, obex_object_t *obj);
void obex_service_driver_unregister(struct obex_service_driver *driver);
GSList *obex_service_driver_list(guint16 services);
struct obex_service_driver *obex_service_driver_find(GSList *drivers,
- const guint8 *uuid);
+ const guint8 *target, guint target_size);