commit d1d2a4ab5e14dfd77c5f38b09efc021166df07d7 Author: David Goulet dgoulet@ev0ke.net Date: Thu Jun 20 20:17:14 2013 -0400
Change connection create function
Don't need anymore the connection domain, take it directly form the sockaddr passed to the function.
Also, set the refcount to 1 on creation.
Signed-off-by: David Goulet dgoulet@ev0ke.net --- src/common/connection.c | 14 ++++++++------ src/common/connection.h | 3 +-- 2 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/src/common/connection.c b/src/common/connection.c index ba1890a..b926f15 100644 --- a/src/common/connection.c +++ b/src/common/connection.c @@ -170,8 +170,7 @@ error: * * Return a newly allocated connection object or else NULL. */ -struct connection *connection_create(int fd, enum connection_domain domain, - struct sockaddr *dest) +struct connection *connection_create(int fd, const struct sockaddr *dest) { struct connection *conn = NULL;
@@ -183,19 +182,22 @@ struct connection *connection_create(int fd, enum connection_domain domain, goto error; }
- switch (domain) { - case CONNECTION_DOMAIN_INET: + switch (dest->sa_family) { + case AF_INET: + conn->dest_addr.domain = CONNECTION_DOMAIN_INET; memcpy(&conn->dest_addr.u.sin, dest, sizeof(conn->dest_addr.u.sin)); break; - case CONNECTION_DOMAIN_INET6: + case AF_INET6: + conn->dest_addr.domain = CONNECTION_DOMAIN_INET6; memcpy(&conn->dest_addr.u.sin6, dest, sizeof(conn->dest_addr.u.sin6)); break; default: - ERR("Connection domain unknown %d", domain); + ERR("Connection domain unknown %d", dest->sa_family); goto error; }
conn->fd = fd; + conn->refcount.count = 1;
return conn;
diff --git a/src/common/connection.h b/src/common/connection.h index d1163a9..17f940c 100644 --- a/src/common/connection.h +++ b/src/common/connection.h @@ -68,8 +68,7 @@ struct connection { int connection_addr_set(enum connection_domain domain, const char *ip, in_port_t port, struct connection_addr *addr);
-struct connection *connection_create(int fd, enum connection_domain domain, - struct sockaddr *dest); +struct connection *connection_create(int fd, const struct sockaddr *dest); struct connection *connection_find(int key); void connection_destroy(struct connection *conn); void connection_remove(struct connection *conn);