[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.
diff --git a/zebra/ChangeLog b/zebra/ChangeLog
index dced676..b7f7112 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 04f12f1..e4e71cf 100644
--- a/zebra/irdp_main.c
+++ b/zebra/irdp_main.c
@@ -224,7 +224,8 @@
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 74c75ab..3c5f155 100644
--- a/zebra/irdp_packet.c
+++ b/zebra/irdp_packet.c
@@ -286,7 +286,7 @@
u_long src;
int on;
- if (!(ifp->flags & IFF_UP))
+ if (!(ifp->flags & IFF_UP))
return;
if (!p)
@@ -311,7 +311,6 @@
/* 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,