From cc2506d077ad45ca4b77e502e5be5062e8118649 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Fri, 20 Jan 2023 12:23:48 -0500 Subject: [PATCH] MT#56447 split out server_info logic This makes it possible to reuse it in different methods. Change-Id: Ibc755b3e60b447332617cb9c4ae8e7f469661281 --- daemon/janus.c | 68 +++++++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 29 deletions(-) diff --git a/daemon/janus.c b/daemon/janus.c index 876c3af2f..fde42c6d8 100644 --- a/daemon/janus.c +++ b/daemon/janus.c @@ -1448,6 +1448,43 @@ const char *janus_trickle(JsonReader *reader, struct janus_session *session, uin } +static const char *janus_server_info(JsonBuilder *builder) { + json_builder_set_member_name(builder, "name"); + json_builder_add_string_value(builder, "rtpengine Janus interface"); + json_builder_set_member_name(builder, "version_string"); + json_builder_add_string_value(builder, RTPENGINE_VERSION); + json_builder_set_member_name(builder, "plugins"); + json_builder_begin_object(builder); // { + json_builder_set_member_name(builder, "janus.plugin.videoroom"); + json_builder_begin_object(builder); // { + json_builder_set_member_name(builder, "name"); + json_builder_add_string_value(builder, "rtpengine Janus videoroom"); + json_builder_end_object(builder); // } + json_builder_end_object(builder); // } + return "server_info"; +} + + +static void janus_finish_response(JsonBuilder *builder, const char *success, const char *err, int retcode) { + json_builder_set_member_name(builder, "janus"); + if (err) { + json_builder_add_string_value(builder, "error"); + + json_builder_set_member_name(builder, "error"); + json_builder_begin_object(builder); // { + json_builder_set_member_name(builder, "code"); + json_builder_add_int_value(builder, retcode); + json_builder_set_member_name(builder, "reason"); + json_builder_add_string_value(builder, err); + json_builder_end_object(builder); // } + + ilog(LOG_WARN, "Janus processing returning error (code %i): %s", retcode, err); + } + else + json_builder_add_string_value(builder, success); +} + + const char *websocket_janus_process(struct websocket_message *wm) { JsonParser *parser = NULL; JsonReader *reader = NULL; @@ -1545,19 +1582,7 @@ const char *websocket_janus_process(struct websocket_message *wm) { break; case CSH_LOOKUP("info"): - success = "server_info"; - json_builder_set_member_name(builder, "name"); - json_builder_add_string_value(builder, "rtpengine Janus interface"); - json_builder_set_member_name(builder, "version_string"); - json_builder_add_string_value(builder, RTPENGINE_VERSION); - json_builder_set_member_name(builder, "plugins"); - json_builder_begin_object(builder); // { - json_builder_set_member_name(builder, "janus.plugin.videoroom"); - json_builder_begin_object(builder); // { - json_builder_set_member_name(builder, "name"); - json_builder_add_string_value(builder, "rtpengine Janus videoroom"); - json_builder_end_object(builder); // } - json_builder_end_object(builder); // } + success = janus_server_info(builder); break; case CSH_LOOKUP("create"): // create new session @@ -1592,22 +1617,7 @@ const char *websocket_janus_process(struct websocket_message *wm) { // done err: - json_builder_set_member_name(builder, "janus"); - if (err) { - json_builder_add_string_value(builder, "error"); - - json_builder_set_member_name(builder, "error"); - json_builder_begin_object(builder); // { - json_builder_set_member_name(builder, "code"); - json_builder_add_int_value(builder, retcode); - json_builder_set_member_name(builder, "reason"); - json_builder_add_string_value(builder, err); - json_builder_end_object(builder); // } - - ilog(LOG_WARN, "Janus processing returning error (code %i): %s", retcode, err); - } - else - json_builder_add_string_value(builder, success); + janus_finish_response(builder, success, err, retcode); if (transaction) { json_builder_set_member_name(builder, "transaction");