From be0068b178b13906ecacb55af65b42f25950642c Mon Sep 17 00:00:00 2001 From: millert Date: Tue, 7 Aug 2007 11:30:53 +0000 Subject: Correctly deal with EOF on pipe wrt kqueue. Based on a fix present in FreeBSD and NetBSD. OK art@ beck@ --- sys/kern/sys_pipe.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'sys/kern/sys_pipe.c') diff --git a/sys/kern/sys_pipe.c b/sys/kern/sys_pipe.c index dda76df3692..bb1985c8dec 100644 --- a/sys/kern/sys_pipe.c +++ b/sys/kern/sys_pipe.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sys_pipe.c,v 1.51 2006/11/17 09:21:52 jmc Exp $ */ +/* $OpenBSD: sys_pipe.c,v 1.52 2007/08/07 11:30:53 millert Exp $ */ /* * Copyright (c) 1996 John S. Dyson @@ -735,9 +735,10 @@ pipeclose(struct pipe *cpipe) * If the other side is blocked, wake it up saying that * we want to close it down. */ + cpipe->pipe_state |= PIPE_EOF; while (cpipe->pipe_busy) { wakeup(cpipe); - cpipe->pipe_state |= PIPE_WANT | PIPE_EOF; + cpipe->pipe_state |= PIPE_WANT; tsleep(cpipe, PRIBIO, "pipecl", 0); } -- cgit v1.2.3-59-g8ed1b