summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nordberg <linus@nordu.net>2011-03-01 01:00:47 +0100
committerLinus Nordberg <linus@nordu.net>2011-03-01 01:00:47 +0100
commit58dc2b3ab4c8dccde97632d1a2d27ba8e6b9c52a (patch)
tree5bb18f1d20179a85934dc6308c3970831b53744b
parentf762125c8296407c918e75c90f30166d7e546b11 (diff)
Don't have the connection freeing peers -- it's the contexts responsibility.
Also, let _rs_peer_destroy() free secret.
-rw-r--r--lib/conn.c10
-rw-r--r--lib/radsec.c2
2 files changed, 3 insertions, 9 deletions
diff --git a/lib/conn.c b/lib/conn.c
index 3fb6a97..924c225 100644
--- a/lib/conn.c
+++ b/lib/conn.c
@@ -123,7 +123,6 @@ rs_conn_disconnect (struct rs_connection *conn)
int
rs_conn_destroy (struct rs_connection *conn)
{
- struct rs_peer *p;
int err = 0;
assert (conn);
@@ -136,14 +135,7 @@ rs_conn_destroy (struct rs_connection *conn)
}
/* NOTE: conn->realm is owned by context. */
-
- for (p = conn->peers; p; p = p->next)
- {
- if (p->addr)
- evutil_freeaddrinfo (p->addr);
- if (p->secret)
- rs_free (conn->ctx, p->secret);
- }
+ /* NOTE: conn->peers is owned by context. */
if (conn->tev)
event_free (conn->tev);
diff --git a/lib/radsec.c b/lib/radsec.c
index b9c9e35..3772158 100644
--- a/lib/radsec.c
+++ b/lib/radsec.c
@@ -120,6 +120,8 @@ _rs_peer_destroy (struct rs_peer *p)
evutil_freeaddrinfo (p->addr);
p->addr = NULL;
}
+ if (p->secret)
+ rs_free (p->conn->ctx, p->secret);
rs_free (p->conn->ctx, p);
}