+
+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;
+}