diff --git a/maestro/subscription_registry.c b/maestro/subscription_registry.c index 7e4f520eb52305ce8455cbf7cbc384c57d173aac..db4402a3d2912abf35f85155a9dc6fa8e5b594da 100644 --- a/maestro/subscription_registry.c +++ b/maestro/subscription_registry.c @@ -7,6 +7,8 @@ #include "maestro/i_misc.h" #include "i_event.h" #include "maestro/i_cdo.h" +#include "maestro/cdo.h" + #include "attributes/maestro-schema.h" @@ -1896,23 +1898,14 @@ mstro_pool_event_consume(const Mstro__Pool__Event *eventmsg) && eventmsg->origin_id->id!=MSTRO_APP_ID_INVALID); assert(eventmsg->offer->cdoid!=NULL); ev->offer.appid = eventmsg->origin_id->id; - { - WARN("FIXME: Missing CDO resolver, returning ID string\n"); - struct mstro_cdo_id id = {.qw[0] = eventmsg->offer->cdoid->qw0, - .qw[1] = eventmsg->offer->cdoid->qw1 }; - - WITH_CDO_ID_STR(idstr, &id, { - ev->offer.cdo_name = strdup(idstr); - }); - if(ev->offer.cdo_name == NULL) { - ERR("Failed to allocate event data\n"); - free(ev); - return MSTRO_NOMEM; - } - - DEBUG("Event: OFFER for |%s| from %" PRIu64 "\n", + const char* cdo_name; + cdo_name = malloc(MSTRO_CDO_NAME_MAX); + assert(cdo_name!=NULL); + mstro_status s = mstro__subscr_resolver_lookup_cdoid( + (struct mstro_cdo_id*)eventmsg->offer->cdoid, &cdo_name); + ev->offer.cdo_name = (char*)cdo_name; + DEBUG("Event: OFFER for |%s| from %" PRIu64 "\n", ev->offer.cdo_name, ev->offer.appid); - } break; case MSTRO_POOL_EVENT_SEAL: diff --git a/tests/simple_archiver.c b/tests/simple_archiver.c index 6e9a2528675196a2fcdf90bad5b251cd7f3fd924..1bf74c66d8330495b876358186c10691e265f87f 100644 --- a/tests/simple_archiver.c +++ b/tests/simple_archiver.c @@ -147,6 +147,7 @@ CHEAT_TEST(simple_archiver, switch(tmp->kind) { case MSTRO_POOL_EVENT_OFFER: /* FIXME: Immediately post a REQUIRE for it */ + fprintf(stderr, "Spotted an OFFER for CDO (`%s`)\n", e->offer.cdo_name); case MSTRO_POOL_EVENT_DECLARE: case MSTRO_POOL_EVENT_DISPOSE: