]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Fix race in erlang process spawning
authorTamas Cseke <tamas.cseke@virtual-call-center.eu>
Mon, 19 May 2014 12:47:39 +0000 (14:47 +0200)
committerTamas Cseke <tamas.cseke@virtual-call-center.eu>
Mon, 19 May 2014 12:47:39 +0000 (14:47 +0200)
We received the reply and signaled the condition
earlier then started to wait for it

src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c

index 5f5295dccb35745f0d4713c21b48411929940699..b1743eb7160d59f6c91d2a6274e2fea036662ce7 100644 (file)
@@ -1466,6 +1466,8 @@ session_elem_t *attach_call_to_spawned_process(listener_t *listener, char *modul
        add_session_elem_to_listener(listener, session_element);
 
        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Added session to listener\n");
+
+       switch_mutex_lock(p->mutex);
        
        if (!strcmp(function, "!")) {
                /* send a message to request a pid */
@@ -1499,7 +1501,6 @@ session_elem_t *attach_call_to_spawned_process(listener_t *listener, char *modul
 
 
        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Waiting for reply %s %s\n", hash, session_element->uuid_str);
-       switch_mutex_lock(p->mutex);
        switch_thread_cond_timedwait(p->ready_or_found, p->mutex, 5000000);
        switch_mutex_unlock(p->mutex);
        if (!p->pid) {