int cnt;
/* receive data & dump file */
- int sum_size;
+ gint64 sum_size;
gchar *expected_name;
- int expected_size;
+ gint64 expected_size;
char* receive_buffer;
webrtc_display_type_e display_type;
close(fd);
}
+static int __convert_string_to_gint64(gchar *str, gint64 *result)
+{
+ gint64 res;
+
+ if (!str || !result) {
+ g_printerr("invalid arguments, str[%p], result[%p]\n", str, result);
+ return -1;
+ }
+
+ res = g_ascii_strtoll((const gchar *)str, NULL, 10);
+ if (res == 0) {
+ g_printerr("failed to g_ascii_strtoll() for [%s]\n", str);
+ return -1;
+ }
+
+ *result = res;
+
+ return 0;
+}
+
static void __data_channel_message_cb(webrtc_data_channel_h channel, webrtc_data_channel_type_e type, void *message, void *user_data)
{
connection_s *conn = (connection_s*)user_data;
} else if (g_str_has_prefix((const gchar *)message, "expected size:")) {
str_arr = g_strsplit((const gchar *)message, ":", 2);
- conn->expected_size = atoi(str_arr[1]);
- if (conn->receive_buffer)
- free(conn->receive_buffer);
- conn->receive_buffer = (char *)calloc(conn->expected_size, sizeof(char));
+ if (__convert_string_to_gint64(str_arr[1], &conn->expected_size) == 0) {
+ if (conn->receive_buffer)
+ free(conn->receive_buffer);
+ conn->receive_buffer = (char *)calloc(conn->expected_size, sizeof(char));
+ }
}
if (str_arr)
g_print("bytes message[%p, size:%u]\n", data_p, size);
if (conn->expected_size > 0 && conn->expected_name) {
- g_print("downloading [%s], size[%d / %d]\n", conn->expected_name, conn->sum_size, conn->expected_size);
+ g_print("downloading [%s], size[%llu / %llu]\n", conn->expected_name, conn->sum_size, conn->expected_size);
memcpy(&conn->receive_buffer[conn->sum_size], ((uint8_t*)data_p), size);