summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--zebra/ChangeLog10
-rw-r--r--zebra/irdp_main.c3
-rw-r--r--zebra/irdp_packet.c3
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,