xfreerdp-server: Fixed deadlock issue in event queue.
authorAsbjørn Heid <lordcrc@gmail.com>
Wed, 15 Feb 2012 07:22:12 +0000 (08:22 +0100)
committerAsbjørn Heid <lordcrc@gmail.com>
Wed, 15 Feb 2012 07:22:12 +0000 (08:22 +0100)
Writing to the pipe may block if the pipe is full. Holding the mutex while writing prevents listeners from
aquiring the mutex and unblocking the write. This leads to a deadlock situation.

server/X11/xf_event.c

index aa25667..d361a5c 100644 (file)
@@ -96,9 +96,9 @@ void xf_event_push(xfEventQueue* event_queue, xfEvent* event)
 
        event_queue->events[(event_queue->count)++] = event;
 
-       xf_set_event(event_queue);
-
        pthread_mutex_unlock(&(event_queue->mutex));
+
+       xf_set_event(event_queue);
 }
 
 xfEvent* xf_event_peek(xfEventQueue* event_queue)