diff options
author | Ondrej Filip <feela@network.cz> | 2004-06-01 15:12:10 +0200 |
---|---|---|
committer | Ondrej Filip <feela@network.cz> | 2004-06-01 15:12:10 +0200 |
commit | 035f6acbfec1e06a207217ae81153b67ced995f3 (patch) | |
tree | 0f30c642631e1a0d370ac45e17c99d13ab4c7332 /proto/ospf/lsupd.c | |
parent | 8281ff201e1eebe35cb8e7716565361bed77a6cd (diff) | |
download | bird-035f6acbfec1e06a207217ae81153b67ced995f3.tar bird-035f6acbfec1e06a207217ae81153b67ced995f3.zip |
Patch from Andreas Steinmetz <ast@domdv.de>
Diffstat (limited to 'proto/ospf/lsupd.c')
-rw-r--r-- | proto/ospf/lsupd.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/proto/ospf/lsupd.c b/proto/ospf/lsupd.c index d1c2078..a8896d6 100644 --- a/proto/ospf/lsupd.c +++ b/proto/ospf/lsupd.c @@ -55,6 +55,8 @@ flood_lsa(struct ospf_neighbor *n, struct ospf_lsa_header *hn, break; case CMP_SAME: s_rem_node(SNODE en); + if(en->lsa_body!=NULL) mb_free(en->lsa_body); + en->lsa_body=NULL; DBG("Removing from lsreq list for neigh %I\n", nn->rid); ospf_hash_delete(nn->lsrqh,en); if(EMPTY_SLIST(nn->lsrql)) ospf_neigh_sm(nn, INM_LOADDONE); @@ -62,6 +64,8 @@ flood_lsa(struct ospf_neighbor *n, struct ospf_lsa_header *hn, break; case CMP_NEWER: s_rem_node(SNODE en); + if(en->lsa_body!=NULL) mb_free(en->lsa_body); + en->lsa_body=NULL; DBG("Removing from lsreq list for neigh %I\n", nn->rid); ospf_hash_delete(nn->lsrqh,en); if(EMPTY_SLIST(nn->lsrql)) ospf_neigh_sm(nn, INM_LOADDONE); @@ -91,6 +95,8 @@ flood_lsa(struct ospf_neighbor *n, struct ospf_lsa_header *hn, if((en=ospf_hash_find_header(nn->lsrth, hh))!=NULL) { s_rem_node(SNODE en); + if(en->lsa_body!=NULL) mb_free(en->lsa_body); + en->lsa_body=NULL; ospf_hash_delete(nn->lsrth, en); } } @@ -416,6 +422,8 @@ ospf_lsupd_rx(struct ospf_lsupd_packet *ps, struct proto *p, if((en=ospf_hash_find_header(ntmp->lsrth,&lsadb->lsa))!=NULL) { s_rem_node(SNODE en); + if(en->lsa_body!=NULL) mb_free(en->lsa_body); + en->lsa_body=NULL; ospf_hash_delete(ntmp->lsrth,en); } } @@ -448,6 +456,8 @@ ospf_lsupd_rx(struct ospf_lsupd_packet *ps, struct proto *p, if((en=ospf_hash_find_header(n->lsrth,&lsadb->lsa))!=NULL) { s_rem_node(SNODE en); + if(en->lsa_body!=NULL) mb_free(en->lsa_body); + en->lsa_body=NULL; ospf_hash_delete(n->lsrth, en); if(ifa->state==OSPF_IS_BACKUP) { |