Incoming parameter: RsslRDMDictionaryMsgEvent *pDictMsgEvt RsslRDMDictionaryMsg *pDictMsg = pDictMsgEvt->pRDMDictionaryMsg; switch(pDictMsg->rdmMsgBase.rdmMsgType) { // in thios case, it's 3: // (gdb) p pDictMsg->rdmMsgBase.rdmMsgType // $2 = 3 // which is RDM_DC_MT_REFRESH case RDM_DC_MT_REFRESH: { RsslRDMDictionaryRefresh *pRefresh = &pDictMsg->refresh; ?case RDM_DC_MT_REFRESH: { ? >?58 RsslRDMDictionaryRefresh *pRefresh = &pDictMsg->refresh; // (gdb) p/x pRefresh->flags // $5 = 0x17 // broken down: // 0x10 - RDM_DC_RFF_CLEAR_CACHE // 0x04 - RDM_DC_RFF_SOLICITED // 0x02 - RDM_DC_RFF_IS_COMPLETE // 0x01 - RDM_DC_RFF_HAS_INFO // continuing.... if (pRefresh->flags & RDM_DC_RFF_HAS_INFO) { // passes switch (pRefresh->type) { // (gdb) p pRefresh->type // $6 = 0 // at this point the 'default case of the switch logs an error containing // the refresh type (0, shown above) // and the streamId: // (gdb) p pRefresh->rdmMsgBase.streamId // $7 = 3 // additional data structure dumps from gdb: (gdb) p *pRefresh $9 = {rdmMsgBase = {streamId = 3, domainType = 5 '\005', rdmMsgType = 3}, flags = 23, state = {streamState = 1 '\001', dataState = 1 '\001', code = 0 '\000', text = {length = 0, data = 0x0}}, dictionaryName = {length = 6, data = 0x7ffff7f7c026 "RWFFld"}, serviceId = 74, verbosity = 7, type = 0, sequenceNumber = 0, pDictionary = 0x0, startFid = -32768, enumStartFid = 0, dictionaryId = 1, version = {length = 6, data = 0x7ffff7f7c0a9 "4.00.2\227y\027y\376"}, dataBody = {length = 238134, data = 0x7ffff7f7c030 "\a\005\200N"}} (gdb) p *pDictMsg $10 = {rdmMsgBase = {streamId = 3, domainType = 5 '\005', rdmMsgType = 3}, request = {rdmMsgBase = {streamId = 3, domainType = 5 '\005', rdmMsgType = 3}, flags = 23, serviceId = 257, verbosity = 0, dictionaryName = {length = 0, data = 0x0}}, close = {rdmMsgBase = {streamId = 3, domainType = 5 '\005', rdmMsgType = 3}}, refresh = {rdmMsgBase = {streamId = 3, domainType = 5 '\005', rdmMsgType = 3}, flags = 23, state = {streamState = 1 '\001', dataState = 1 '\001', code = 0 '\000', text = {length = 0, data = 0x0}}, dictionaryName = { length = 6, data = 0x7ffff7f7c026 "RWFFld"}, serviceId = 74, verbosity = 7, type = 0, sequenceNumber = 0, pDictionary = 0x0, startFid = -32768, enumStartFid = 0, dictionaryId = 1, version = {length = 6, data = 0x7ffff7f7c0a9 "4.00.2\227y\027y\376"}, dataBody = {length = 238134, data = 0x7ffff7f7c030 "\a\005\200N"}}, status = {rdmMsgBase = {streamId = 3, domainType = 5 '\005', rdmMsgType = 3}, flags = 23, state = {streamState = 1 '\001', dataState = 1 '\001', code = 0 '\000', text = {length = 0, data = 0x0}}}} There appears to be some disconnect between the data in the xml trace and the data in structure passed to the application while the length of the data in the dataBody matches as do the streamId (3) and serviceId (74) some of the fields differ. For example, the flags are clearly shown as 23 (0x17) above, but the xml trace shows them as: 0x168 Looking at the xml data, I can see that the data for the dictionary is there, but the application is unable to access it since it cannot tell if the data is for the field definitions or the enum tables. given the XML data: serviceId="74" name="RWFFld", if looks like the data are for the Field definitions and examination of RsslRDMDictionaryRefresh structure ahows: (gdb) p pRefresh->dictionaryName $14 = {length = 6, data = 0x7ffff7f7c026 "RWFFld"} indicating that the data are present, but the type is not properly set as per the documentation and sample code