diff --git a/src/ifmap/ifmap_server_show.cc b/src/ifmap/ifmap_server_show.cc index 38ca9a496e3..7c560b62997 100644 --- a/src/ifmap/ifmap_server_show.cc +++ b/src/ifmap/ifmap_server_show.cc @@ -360,8 +360,6 @@ void ShowIFMapLinkTable::CopyNode(IFMapLinkShowInfo *dest, DBEntryBase *src, IFMapServer *server) { IFMapLink *src_link = static_cast(src); - IFMapLinkState *state = server->exporter()->LinkStateLookup(src_link); - dest->metadata = src_link->metadata(); if (src_link->left()) { dest->left = src_link->left()->ToString(); @@ -371,8 +369,13 @@ void ShowIFMapLinkTable::CopyNode(IFMapLinkShowInfo *dest, DBEntryBase *src, } // Get the interests and advertised from state - dest->interests = state->interest().ToNumberedString(); - dest->advertised = state->advertised().ToNumberedString(); + IFMapLinkState *state = server->exporter()->LinkStateLookup(src_link); + if (state) { + dest->interests = state->interest().ToNumberedString(); + dest->advertised = state->advertised().ToNumberedString(); + } else { + dest->dbentryflags.append("No state, "); + } if (src_link->IsDeleted()) { dest->dbentryflags.append("Deleted, "); @@ -598,7 +601,7 @@ bool ShowIFMapPerClientNodes::CopyNode(IFMapPerClientNodesShowInfo *dest, int client_index) { IFMapNodeState *state = server->exporter()->NodeStateLookup(src); - if (state->interest().test(client_index)) { + if (state && state->interest().test(client_index)) { dest->node_name = src->ToString(); if (state->advertised().test(client_index)) { dest->sent = "Yes"; @@ -774,7 +777,7 @@ bool ShowIFMapPerClientLinkTable::CopyNode(IFMapPerClientLinksShowInfo *dest, IFMapLink *src, IFMapServer *server, int client_index) { IFMapLinkState *state = server->exporter()->LinkStateLookup(src); - if (state->interest().test(client_index)) { + if (state && state->interest().test(client_index)) { dest->metadata = src->metadata(); dest->left = src->left()->ToString(); dest->right = src->right()->ToString();