diff options
author | Paul Jakma <paul.jakma@sun.com> | 2006-08-04 06:18:04 +0000 |
---|---|---|
committer | Paul Jakma <paul.jakma@sun.com> | 2006-08-04 06:18:04 +0000 |
commit | 36943749147bef10df8ffc0e2ad79f4dd06cd9ac (patch) | |
tree | 17f031ea7faf31f94e7e7adfaace741ca4d17e39 | |
parent | 7e4bcdc1d6d0e0338fe5cac6103dd485332e7b51 (diff) |
[zebra] IRDP: Move stream_free to where its created, probably fixing a leak
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.
-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, |