Fix timing issue
[platform/core/api/vine.git] / src / vine-data-path.cpp
index 89fd74f..281059f 100755 (executable)
@@ -488,6 +488,10 @@ int vine_data_path_close(vine_data_path_h datapath)
        vine_data_path_s *dp = (vine_data_path_s *)datapath;
        RET_VAL_IF(!dp->plugin_fn || !dp->plugin_fn->close,
                        VINE_ERROR_INVALID_PARAMETER, "plugin_fn is NULL");
+
+       // Unset callbacks related with vine_dp_open() before closing to avoid timing issue.
+       dp->opened_cb = NULL;
+       dp->connected_cb = NULL;
        dp->plugin_fn->close(dp->plugin_handle);
 
        return VINE_ERROR_NONE;
@@ -569,6 +573,12 @@ int vine_data_path_destroy(vine_data_path_h datapath)
        dp->listen_dp = NULL;
        delete dp->state;
 
+       dp->opened_cb = NULL;
+       dp->accepted_cb = NULL;
+       dp->connected_cb = NULL;
+       dp->recv_cb = NULL;
+       dp->terminated_cb = NULL;
+
        VINE_LOGD("data_path[%p] is destroyed", datapath);
        free(datapath);
        return VINE_ERROR_NONE;