Skip to content

Commit

Permalink
tmp: avoid dead lock in callback
Browse files Browse the repository at this point in the history
  • Loading branch information
qzhuyan committed Apr 12, 2024
1 parent 22f5324 commit 3b10d80
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions c_src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -79,19 +79,22 @@ erlfdb_future_cb(FDBFuture* fdb_future, void* data)
// submitted to the network thread or not so that
// we pass the correct environment to enif_send
if(enif_thread_type() == ERL_NIF_THR_UNDEFINED) {
enif_mutex_lock(future->lock);
caller = NULL;
} else {
caller = future->pid_env;
}

enif_mutex_lock(future->lock);


if(!future->cancelled) {
msg = T2(future->msg_env, future->msg_ref, ATOM_ready);
enif_send(caller, &(future->pid), future->msg_env, msg);
}

enif_mutex_unlock(future->lock);
if (!caller) {
enif_mutex_unlock(future->lock);
}

// We're now done with this future which means we need
// to release our handle to it. See erlfdb_create_future
Expand Down

0 comments on commit 3b10d80

Please sign in to comment.