diff options
-rw-r--r-- | zebra/ChangeLog | 10 | ||||
-rw-r--r-- | zebra/irdp_main.c | 3 | ||||
-rw-r--r-- | zebra/irdp_packet.c | 3 |
3 files changed, 13 insertions, 3 deletions
diff --git a/zebra/ChangeLog b/zebra/ChangeLog index dced6760..b7f71124 100644 --- a/zebra/ChangeLog +++ b/zebra/ChangeLog @@ -8,6 +8,16 @@ * misc_null.c: Must include header files to get older versions of gcc to process the #pragma statements properly. +2006-08-01 Paul Jakma <paul.jakma@sun.com> + + * irdp_main.c: (irdp_advertisement) free the stream here, when done, + right under where it was allocated so it's blindingly obvious + it's correct. This possibly fixes a very slow leak of streams in + zebra. + * irdp_packet.c: (send_packet) don't free the stream here as + it's hard to tell if right, plus an error case seemed to + returning before free anyway. + 2006-07-27 Paul Jakma <paul.jakma@sun.com> * {ioctl,kernel}_null.c: Dummy/Null kernel method implementations, diff --git a/zebra/irdp_main.c b/zebra/irdp_main.c index 04f12f18..e4e71cf3 100644 --- a/zebra/irdp_main.c +++ b/zebra/irdp_main.c @@ -224,7 +224,8 @@ static void irdp_advertisement (struct interface *ifp, struct prefix *p) struct stream *s; s = stream_new (128); make_advertisement_packet (ifp, p, s); - irdp_send(ifp, p, s); + irdp_send(ifp, p, s); + stream_free (s); } int irdp_send_thread(struct thread *t_advert) diff --git a/zebra/irdp_packet.c b/zebra/irdp_packet.c index 74c75ab2..3c5f1559 100644 --- a/zebra/irdp_packet.c +++ b/zebra/irdp_packet.c @@ -286,7 +286,7 @@ send_packet(struct interface *ifp, u_long src; int on; - if (!(ifp->flags & IFF_UP)) + if (!(ifp->flags & IFF_UP)) return; if (!p) @@ -311,7 +311,6 @@ send_packet(struct interface *ifp, /* icmp->checksum is already calculated */ ip->ip_len = sizeof(struct ip) + stream_get_endp(s); - stream_free(s); on = 1; if (setsockopt(irdp_sock, IPPROTO_IP, IP_HDRINCL, |