|
|
@ -22,7 +22,7 @@ struct janus_session { // "login" session |
|
|
}; |
|
|
}; |
|
|
struct janus_handle { // corresponds to a conference participant |
|
|
struct janus_handle { // corresponds to a conference participant |
|
|
uint64_t id; |
|
|
uint64_t id; |
|
|
uint64_t session; |
|
|
|
|
|
|
|
|
struct janus_session *session; // holds a reference |
|
|
uint64_t room; |
|
|
uint64_t room; |
|
|
}; |
|
|
}; |
|
|
struct janus_room { |
|
|
struct janus_room { |
|
|
@ -1125,7 +1125,7 @@ const char *janus_attach(JsonReader *reader, JsonBuilder *builder, struct janus_ |
|
|
|
|
|
|
|
|
struct janus_handle *handle = g_slice_alloc0(sizeof(*handle)); |
|
|
struct janus_handle *handle = g_slice_alloc0(sizeof(*handle)); |
|
|
mutex_lock(&janus_lock); |
|
|
mutex_lock(&janus_lock); |
|
|
handle->session = session->id; |
|
|
|
|
|
|
|
|
handle->session = obj_get(session); |
|
|
uint64_t handle_id = 0; |
|
|
uint64_t handle_id = 0; |
|
|
while (1) { |
|
|
while (1) { |
|
|
handle_id = handle->id = janus_random(); |
|
|
handle_id = handle->id = janus_random(); |
|
|
@ -1183,13 +1183,14 @@ const char *janus_detach(struct websocket_message *wm, JsonReader *reader, JsonB |
|
|
struct janus_handle *handle = g_hash_table_lookup(janus_handles, &handle_id); |
|
|
struct janus_handle *handle = g_hash_table_lookup(janus_handles, &handle_id); |
|
|
|
|
|
|
|
|
*retcode = 463; |
|
|
*retcode = 463; |
|
|
if (!handle || handle->session != session->id) |
|
|
|
|
|
|
|
|
if (!handle || handle->session != session) |
|
|
return "Could not detach handle from plugin"; |
|
|
return "Could not detach handle from plugin"; |
|
|
|
|
|
|
|
|
room_id = handle->room; |
|
|
room_id = handle->room; |
|
|
|
|
|
|
|
|
// destroy handle |
|
|
// destroy handle |
|
|
g_hash_table_remove(janus_handles, &handle_id); |
|
|
g_hash_table_remove(janus_handles, &handle_id); |
|
|
|
|
|
obj_put(session); |
|
|
g_slice_free1(sizeof(*handle), handle); |
|
|
g_slice_free1(sizeof(*handle), handle); |
|
|
|
|
|
|
|
|
if (!room_id) |
|
|
if (!room_id) |
|
|
@ -1347,7 +1348,7 @@ const char *janus_message(struct websocket_message *wm, JsonReader *reader, Json |
|
|
struct janus_handle *handle = g_hash_table_lookup(janus_handles, &handle_id); |
|
|
struct janus_handle *handle = g_hash_table_lookup(janus_handles, &handle_id); |
|
|
|
|
|
|
|
|
const char *err = NULL; |
|
|
const char *err = NULL; |
|
|
if (!handle || handle->session != session->id) { |
|
|
|
|
|
|
|
|
if (!handle || handle->session != session) { |
|
|
*retcode = 457; |
|
|
*retcode = 457; |
|
|
err = "No plugin handle given or invalid handle"; |
|
|
err = "No plugin handle given or invalid handle"; |
|
|
} |
|
|
} |
|
|
@ -1436,7 +1437,7 @@ const char *janus_trickle(JsonReader *reader, struct janus_session *session, uin |
|
|
|
|
|
|
|
|
struct janus_handle *handle = g_hash_table_lookup(janus_handles, &handle_id); |
|
|
struct janus_handle *handle = g_hash_table_lookup(janus_handles, &handle_id); |
|
|
|
|
|
|
|
|
if (!handle || !handle->room || handle->session != session->id) |
|
|
|
|
|
|
|
|
if (!handle || !handle->room || handle->session != session) |
|
|
return "Unhandled request method"; |
|
|
return "Unhandled request method"; |
|
|
|
|
|
|
|
|
struct janus_room *room = g_hash_table_lookup(janus_rooms, &handle->room); |
|
|
struct janus_room *room = g_hash_table_lookup(janus_rooms, &handle->room); |
|
|
|