Can you post the exact addresses and routing configuration you're using and which direction messages are flowing? I'd like to try to simulate this using the example send/recv scripts.
My guess is that the issue may not be so much related to whether the addresses are NULL or not but whether there are multiple receivers competing for the same messages. --Rafael On Thu, Oct 24, 2013 at 11:52 AM, Bozo Dragojevic <[email protected]>wrote: > Hi! > > Chasing down a weird behavior... > > looking at messengers pni_pump_out() and how it's used from > pn_messenger_endpoints() > > link = pn_link_head(conn, PN_LOCAL_ACTIVE | PN_REMOTE_ACTIVE); > while (link) { > if (pn_link_is_sender(link)) { > pni_pump_out(messenger, > pn_terminus_get_address(pn_**link_target(link)), > link); > > > is it really fair to assume that target address is always expected to be > non NULL? > > > I've added a bit of debug code to pn_messenger_endpoints() so it reads: > > link = pn_link_head(conn, PN_LOCAL_ACTIVE | PN_REMOTE_ACTIVE); > while (link) { > if (pn_link_is_sender(link)) { > static int addrnull, addrok; > const char *address = pn_terminus_get_address(pn_** > link_target(link)); > if (!address) { > addrnull++; > } else { > addrok++; > } > fprintf(stderr, "links with null address: %d links with ok address > %d\n", > addrnull, addrok); > pni_pump_out(messenger, address, link); > > > and I never see 'addrok' change from 0 > > > when pni_pump_out is called with address==NULL: > > int pni_pump_out(pn_messenger_t *messenger, const char *address, pn_link_t > *sender) > { > pni_entry_t *entry = pni_store_get(messenger->**outgoing, address); > if (!entry) return 0; > > pni_store_get cheerfuly returns first message on the list > > > end effect is that random clients start receiving messages not directed at > them. > > > For some inexplicable reason is mostly works out while there are just two > clients > connected to the messenger and we're not pushing it really hard. Still > trying to come > up with a simple test-case. > > Can anyone shed some light how the addressing on the link level is > supposed to work in mesenger? > > Bozzo >
