diff --git a/pimd/pim_ifchannel.c b/pimd/pim_ifchannel.c index 7a1c3e2acd..f7d9a4e4fb 100644 --- a/pimd/pim_ifchannel.c +++ b/pimd/pim_ifchannel.c @@ -568,7 +568,7 @@ struct pim_ifchannel *pim_ifchannel_add(struct interface *ifp, __PRETTY_FUNCTION__, pim_str_sg_dump(sg), ifp->name); pim_ifchannel_remove_children(ch); - if (ch) + if (ch->sources) list_delete(ch->sources); listnode_delete(pim_ifp->pim_ifchannel_list, ch); diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c index e7987eb6e7..9151d9ecf3 100644 --- a/pimd/pim_upstream.c +++ b/pimd/pim_upstream.c @@ -1362,6 +1362,13 @@ static int pim_upstream_register_stop_timer(struct thread *t) return 0; } rpg = RP(pim_ifp->pim, up->sg.grp); + if (!rpg) { + if (PIM_DEBUG_TRACE) + zlog_debug( + "%s: Cannot send register for %s no RPF to the RP", + __PRETTY_FUNCTION__, up->sg_str); + return 0; + } memset(&ip_hdr, 0, sizeof(struct ip)); ip_hdr.ip_p = PIM_IP_PROTO_PIM; ip_hdr.ip_hl = 5;