summaryrefslogtreecommitdiff
path: root/src/common/socket.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/socket.c')
-rw-r--r--src/common/socket.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/common/socket.c b/src/common/socket.c
index fafa229df..19a2ecdea 100644
--- a/src/common/socket.c
+++ b/src/common/socket.c
@@ -283,14 +283,19 @@ static int send_from_fifo(int fd)
return 0;
}
-void flush_fifo(int fd)
+void flush_fifo(int fd, int lock)
{
- if(session[fd] != NULL && session[fd]->func_send == send_from_fifo)
- {
+ if(session[fd] == NULL || session[fd]->func_send != send_from_fifo)
+ return;
+ if (lock)
+ { //Lock the thread until data is sent.
set_nonblocking(fd, 1);
send_from_fifo(fd);
set_nonblocking(fd, 0);
+ return;
}
+ //Send without locking the thread.
+ send_from_fifo(fd);
}
void flush_fifos(void)