typedef struct {
intptr_t remote_pkt;
gint fd;
+ gint fd_id;
bool use_tsurf_pool;
- struct timespec fd_time;
} _media_pkt_fin_data;
/*
}
if (muse_core_ipc_fd_is_valid(fin_data->fd)) {
- struct stat stat_results = {0, };
- char s_path[MAX_S_PATH_LEN] = {0, };
-
- snprintf(s_path, MAX_S_PATH_LEN, "/proc/self/fd/%d", fin_data->fd);
-
- if (lstat(s_path, &stat_results) != 0) {
- LOGW("[fd:%d][errno:%d] lstat error", fin_data->fd, errno);
- /* do not exit here to avoid mem leak in muse demon */
- } else {
- if ((fin_data->fd_time.tv_sec != stat_results.st_mtim.tv_sec) ||
- (fin_data->fd_time.tv_nsec != stat_results.st_mtim.tv_nsec)) {
- LOGE("[fd:%d][%d:%ld][%d:%ld] is invalid", fin_data->fd,
- fin_data->fd_time.tv_sec, fin_data->fd_time.tv_nsec,
- stat_results.st_mtim.tv_sec, stat_results.st_mtim.tv_nsec);
- goto EXIT;
- }
+ if (muse_core_client_check_fd_id_value(fin_data->fd, fin_data->fd_id) == FALSE) {
+ LOGE("[fd:%d,id:%d] is invalid.", fin_data->fd, fin_data->fd_id);
+ goto EXIT;
}
packet = fin_data->remote_pkt;
uint64_t pts = 0;
int i = 0;
muse_core_msg_parse_err_e err = MUSE_MSG_PARSE_ERROR_NONE;
- struct stat stat_results = {0, };
- char s_path[MAX_S_PATH_LEN] = {0, };
void *jobj = muse_core_msg_json_object_new(recv_data->buffer, NULL, &err);
if (!jobj ||
fin_data->fd = cb_info->fd;
fin_data->use_tsurf_pool = cb_info->use_tsurf_pool;
- snprintf(s_path, MAX_S_PATH_LEN, "/proc/self/fd/%d", fin_data->fd);
- if (lstat(s_path, &stat_results) != 0)
- LOGW("[fd:%d][errno:%d] lstat error", fin_data->fd, errno);
- else /* Keep the Time of last modified of socket */
- fin_data->fd_time = stat_results.st_mtim;
+ /* Keep the fd id to check validation when the pkt is destroyed. */
+ fin_data->fd_id = muse_core_client_get_fd_id_value(fin_data->fd);
ret = media_packet_create_from_tbm_surface(cb_info->pkt_fmt, tsurf, (media_packet_finalize_cb) _player_media_packet_finalize, (void *)fin_data, &pkt);
if (ret != MEDIA_PACKET_ERROR_NONE || !pkt) {
muse_core_connection_close(cb_info->fd); /* fd close and unlink symbolic path */
if (cb_info->data_fd > INVALID_DEFAULT_VALUE)
muse_core_connection_close(cb_info->data_fd);
+
cb_info->fd = cb_info->data_fd = INVALID_DEFAULT_VALUE;
g_thread_join(cb_info->thread);