ustream-fd: only use read() == 0 as eof indication, and issue a state change notification when that happens
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
This commit is contained in:
parent
e72b65c899
commit
f24b6294c2
1 changed files with 2 additions and 7 deletions
|
@ -72,6 +72,8 @@ static void ustream_fd_read_pending(struct ustream_fd *sf, bool *more)
|
|||
|
||||
if (!len) {
|
||||
sf->fd.eof = true;
|
||||
ustream_state_change(s);
|
||||
ustream_fd_set_uloop(s, false);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -115,7 +117,6 @@ static int ustream_fd_write(struct ustream *s, const char *buf, int buflen, bool
|
|||
static bool __ustream_fd_poll(struct ustream_fd *sf, unsigned int events)
|
||||
{
|
||||
struct ustream *s = &sf->stream;
|
||||
struct uloop_fd *fd = &sf->fd;
|
||||
bool more = false;
|
||||
|
||||
if (events & ULOOP_READ)
|
||||
|
@ -126,12 +127,6 @@ static bool __ustream_fd_poll(struct ustream_fd *sf, unsigned int events)
|
|||
ustream_fd_set_uloop(s, false);
|
||||
}
|
||||
|
||||
if (!s->eof && fd->eof) {
|
||||
s->eof = true;
|
||||
ustream_fd_set_uloop(s, false);
|
||||
ustream_state_change(s);
|
||||
}
|
||||
|
||||
return more;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue