diff --git a/obexd/src/service.c b/obexd/src/service.c
index 196a5c1..c6ce101 100644
--- a/obexd/src/service.c
+++ b/obexd/src/service.c
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)
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;
}