From 9aa191e35f1611f64031d34e1c2ad17d6fd252b6 Mon Sep 17 00:00:00 2001 From: Luiz Augusto Von Dentz Date: Mon, 22 Feb 2010 17:26:26 +0200 Subject: [PATCH] obexd: Fix service driver selection when WHO header is informed Drivers which support WHO header should be checked first since they have priority e.g. pcsuite over ftp. --- obexd/src/service.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/obexd/src/service.c b/obexd/src/service.c index 196a5c129..c6ce10165 100644 --- a/obexd/src/service.c +++ b/obexd/src/service.c @@ -49,8 +49,8 @@ struct obex_service_driver *obex_service_driver_find(GSList *list, struct obex_service_driver *driver = l->data; if (driver->who && who && - driver->who_size == who_size && - memcmp(driver->who, who, who_size) != 0) + (driver->who_size != who_size || + memcmp(driver->who, who, who_size) != 0)) continue; if (driver->target == NULL && target == NULL) @@ -97,7 +97,11 @@ int obex_service_driver_register(struct obex_service_driver *driver) debug("driver %p service %s registered", driver, driver->name); - drivers = g_slist_append(drivers, driver); + /* Drivers that support who has priority */ + if (driver->who) + drivers = g_slist_prepend(drivers, driver); + else + drivers = g_slist_append(drivers, driver); return 0; } -- 2.47.3