diff options
Diffstat (limited to 'lib/peer.c')
-rw-r--r-- | lib/peer.c | 31 |
1 files changed, 26 insertions, 5 deletions
@@ -8,6 +8,7 @@ #include <assert.h> #include <radsec/radsec.h> #include <radsec/radsec-impl.h> +#include "err.h" #include "peer.h" struct rs_peer * @@ -23,18 +24,38 @@ peer_pick_peer (struct rs_connection *conn) return conn->active_peer; } +struct rs_peer * +peer_create (struct rs_context *ctx, struct rs_peer **rootp) +{ + struct rs_peer *p; + + p = (struct rs_peer *) rs_malloc (ctx, sizeof(*p)); + if (p) + { + memset (p, 0, sizeof(struct rs_peer)); + if (*rootp) + { + p->next = (*rootp)->next; + (*rootp)->next = p; + } + else + *rootp = p; + } + return p; +} + /* Public functions. */ int rs_peer_create (struct rs_connection *conn, struct rs_peer **peer_out) { struct rs_peer *peer; - peer = _rs_peer_create (conn->ctx, &conn->peers); + peer = peer_create (conn->ctx, &conn->peers); if (peer) { peer->conn = conn; - peer->realm->timeout = 2; - peer->realm->retries = 2; + peer->realm->timeout = 2; /* FIXME: Why? */ + peer->realm->retries = 2; /* FIXME: Why? */ } else return rs_err_conn_push_fl (conn, RSE_NOMEM, __FILE__, __LINE__, NULL); @@ -52,9 +73,9 @@ rs_peer_set_address (struct rs_peer *peer, const char *hostname, assert (peer); assert (peer->realm); - err = _rs_resolv (&peer->addr, peer->realm->type, hostname, service); + err = rs_resolv (&peer->addr, peer->realm->type, hostname, service); if (err) - return _rs_err_conn_push_err (peer->conn, err); + return err_conn_push_err (peer->conn, err); return RSE_OK; } |