From 36943749147bef10df8ffc0e2ad79f4dd06cd9ac Mon Sep 17 00:00:00 2001 From: Paul Jakma Date: Fri, 4 Aug 2006 06:18:04 +0000 Subject: [zebra] IRDP: Move stream_free to where its created, probably fixing a leak 2006-08-01 Paul Jakma * 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. --- zebra/ChangeLog | 10 ++++++++++ zebra/irdp_main.c | 3 ++- 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 + + * 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 * {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, -- cgit v1.2.1