From edba397496652958f444f04ec4ae8ba8d672b750 Mon Sep 17 00:00:00 2001 From: Andreas Pohl Date: Fri, 24 Oct 2014 09:58:53 +0200 Subject: [PATCH] lthread_socket.c: Fixed lthread_close(): clear EOF bit for the calling thread if it is set --- src/lthread_socket.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/lthread_socket.c b/src/lthread_socket.c index b06a2ca..f0397fa 100644 --- a/src/lthread_socket.c +++ b/src/lthread_socket.c @@ -211,6 +211,12 @@ lthread_close(int fd) lt->state |= BIT(LT_ST_FDEOF); } + /* clear the eof bit of the calling lthread */ + lt = lthread_get_sched()->current_lthread; + if (lt->state & BIT(LT_ST_FDEOF)) { + lt->state &= CLEARBIT(LT_ST_FDEOF); + } + /* closing fd removes its registered events from poller */ return (close(fd)); }