static webrtc_h g_webrtc;
static char *g_offer;
static char *g_answer;
+static char *g_remote_desc;
static SoupWebsocketConnection *g_ws_conn;
static gint32 g_local_peer_id;
static gchar g_signaling_server[MAX_STRING_LEN];
g_print("webrtc_set_local_description() success\n");
}
-static void _webrtc_set_remote_description(char *desc)
+static void _webrtc_set_remote_description(void)
{
int ret = WEBRTC_ERROR_NONE;
- ret = webrtc_set_remote_description(g_webrtc, desc);
+ ret = webrtc_set_remote_description(g_webrtc, g_remote_desc);
if (ret != WEBRTC_ERROR_NONE)
g_print("failed to webrtc_set_remote_description()\n");
else
{
JsonNode *root;
JsonObject *object;
- JsonParser *parser = json_parser_new();
+ JsonParser *parser;
+
+ if (!text) {
+ g_printerr("text is NULL\n");
+ return;
+ }
+
+ parser = json_parser_new();
if (!json_parser_load_from_data(parser, text, -1, NULL)) {
g_printerr("unknown message [%s]\n", text);
object = json_node_get_object(root);
if (json_object_has_member(object, "sdp")){
g_print("\n[from SERVER > SDP]\n%s\n", text);
- /* FIXME: set remote session description */
+ if (g_remote_desc)
+ free(g_remote_desc);
+ g_remote_desc = strdup(text);
} else if (json_object_has_member(object, "ice")){
g_print("\n[from SERVER > ICE]\n%s\n", text);
_webrtc_stop();
_webrtc_destroy();
}
-
+ free(g_offer);
+ free(g_answer);
+ free(g_remote_desc);
elm_exit();
}
g_menu_state = CURRENT_STATUS_SET_LOCAL_DESCRIPTION;
} else if (strncmp(cmd, "sr", 2) == 0) {
- g_menu_state = CURRENT_STATUS_SET_REMOTE_DESCRIPTION;
+ _webrtc_set_remote_description();
} else if (strncmp(cmd, "st", 2) == 0) {
g_menu_state = CURRENT_STATUS_SET_STUN_SERVER;
g_print("*** input STUN server address.\n");
} else if (g_menu_state == CURRENT_STATUS_SET_LOCAL_DESCRIPTION) {
g_print("*** input type of local description.(1:offer, 2:answer)\n");
- } else if (g_menu_state == CURRENT_STATUS_SET_REMOTE_DESCRIPTION) {
- g_print("*** input type of remote description.(1:offer, 2:answer)\n");
} else if (g_menu_state == CURRENT_STATUS_SETTING_SIGNALING_SERVER) {
g_print("*** input signaling server URL.\n");
} else if (g_menu_state == CURRENT_STATUS_SETTING_PROXY) {
gboolean timeout_quit_program(void *data)
{
- free(g_offer);
- free(g_answer);
quit_program();
return FALSE;
}
reset_menu_state();
break;
}
- case CURRENT_STATUS_SET_REMOTE_DESCRIPTION: {
- /* FIXME: Setting remote description should be set via signaling server */
- value = atoi(cmd);
- if (value == 1)
- _webrtc_set_remote_description(g_offer);
- else if (value == 2)
- _webrtc_set_remote_description(g_answer);
- else
- g_print("invalid value[%d]\n", value);
-
- reset_menu_state();
- break;
- }
case CURRENT_STATUS_SETTING_SIGNALING_SERVER: {
_setting_uri(g_signaling_server, cmd);
reset_menu_state();