celix
celix copied to clipboard
Filter version comparison
celix_filter_t *filter = celix_filter_create("(&(service.version>=1.2.2)(service.version<=1.2.2))");
celix_properties_t *prop = celix_properties_create();
celix_properties_set(prop, "service.version", "1.2.2.0");
CHECK_TRUE(celix_filter_match(filter, prop)); // It fails.
celix_properties_destroy(prop);
celix_filter_destroy(filter);
It happens because celix_filter makes simple strcmp when dealing with <= and >=. The above makes our dm_exmaple broken, i.e., phase2b's requirement is never satisfied and thus not active:
#define PHASE1_RANGE_EXACT "[1.2.2.0,1.2.2.0]"
celix_dmServiceDependency_setService(dep, PHASE1_NAME, PHASE1_RANGE_EXACT, NULL);