X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Fconnection.c;h=cf93fb6e7ba93df52b548ace622c2387eea43c97;hb=317eadef3cb6e74992824cad4c1193b6dc1e9fdf;hp=dab794147f5e37ac773f1a8c419e16374f02af88;hpb=5312a3edd938117cb5670de711f237e7b6f2e68c;p=lttng-tools.git diff --git a/src/bin/lttng-relayd/connection.c b/src/bin/lttng-relayd/connection.c index dab794147..cf93fb6e7 100644 --- a/src/bin/lttng-relayd/connection.c +++ b/src/bin/lttng-relayd/connection.c @@ -127,6 +127,10 @@ static void rcu_free_connection(struct rcu_head *head) viewer_session_destroy(conn->viewer_session); conn->viewer_session = NULL; } + if (conn->type == RELAY_CONTROL) { + lttng_dynamic_buffer_reset( + &conn->protocol.ctrl.reception_buffer); + } free(conn); } @@ -176,3 +180,27 @@ void connection_ht_add(struct lttng_ht *relay_connections_ht, conn->in_socket_ht = 1; conn->socket_ht = relay_connections_ht; } + +int connection_set_session(struct relay_connection *conn, + struct relay_session *session) +{ + int ret = 0; + + assert(conn); + assert(session); + assert(!conn->session); + + if (connection_get(conn)) { + if (session_get(session)) { + conn->session = session; + } else { + ERR("Failed to get session reference in connection_set_session()"); + ret = -1; + } + connection_put(conn); + } else { + ERR("Failed to get connection reference in connection_set_session()"); + ret = -1; + } + return ret; +}