From owner-freebsd-current@FreeBSD.ORG Thu Nov 18 17:01:04 2004 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 23E0716A4CE; Thu, 18 Nov 2004 17:01:03 +0000 (GMT) Received: from critter.freebsd.dk (critter.freebsd.dk [212.242.86.163]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3C01C43D49; Thu, 18 Nov 2004 17:01:03 +0000 (GMT) (envelope-from phk@critter.freebsd.dk) Received: from critter.freebsd.dk (localhost [127.0.0.1]) by critter.freebsd.dk (8.13.1/8.13.1) with ESMTP id iAIH12xc052049; Thu, 18 Nov 2004 18:01:02 +0100 (CET) (envelope-from phk@critter.freebsd.dk) To: Giorgos Keramidas From: "Poul-Henning Kamp" In-Reply-To: Your message of "Thu, 18 Nov 2004 18:52:44 +0200." <20041118165244.GA46388@orion.daedalusnetworks.priv> Date: Thu, 18 Nov 2004 18:01:02 +0100 Message-ID: <52048.1100797262@critter.freebsd.dk> Sender: phk@critter.freebsd.dk cc: freebsd-current@freebsd.org Subject: Re: bug of misc/screen and fifos or ours? X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Nov 2004 17:01:04 -0000 In message <20041118165244.GA46388@orion.daedalusnetworks.priv>, Giorgos Kerami das writes: >On 2004-11-18 17:47, Poul-Henning Kamp wrote: >> In message <20041118164356.GA46185@orion.daedalusnetworks.priv>, >> Giorgos Keramidas writes: >> >> > BLOCK fcntl >> > >> >This is apparently the result of the following code from screen/socket.c: >> > >> > 793 #ifdef NAMEDPIPE >> > 794 debug("Ha, there was someone knocking on my fifo??\n"); >> > 795 if (fcntl(ServerSocket, F_SETFL, 0) == -1) >> > 796 Panic(errno, "BLOCK fcntl"); >> > 797 #else >> > >> >At line 795, screen attempts to set blocking mode on a FIFO and fails. >> >> Can you get me the exact errno value ? > >Sure. It's ENOTTY. Ok, found it, my bug, can you try this patch: Index: fs/fifofs/fifo_vnops.c =================================================================== RCS file: /home/ncvs/src/sys/fs/fifofs/fifo_vnops.c,v retrieving revision 1.105 diff -u -r1.105 fifo_vnops.c --- fs/fifofs/fifo_vnops.c 17 Nov 2004 07:30:02 -0000 1.105 +++ fs/fifofs/fifo_vnops.c 18 Nov 2004 16:59:25 -0000 @@ -566,8 +566,27 @@ static int fifo_ioctl_f(struct file *fp, u_long com, void *data, struct ucred *cred, struct thread *td) { + struct fifoinfo *fi; + struct file filetmp; /* Local, so need not be locked. */ + int error; - return (vnops.fo_ioctl(fp, com, data, cred, td)); + error = ENOTTY; + fi = fp->f_data; + if (com == FIONBIO) + return (0); + if (fp->f_flag & FREAD) { + filetmp.f_data = fi->fi_readsock; + filetmp.f_cred = cred; + error = soo_ioctl(&filetmp, com, data, cred, td); + if (error) + return (error); + } + if (fp->f_flag & FWRITE) { + filetmp.f_data = fi->fi_writesock; + filetmp.f_cred = cred; + error = soo_ioctl(&filetmp, com, data, cred, td); + } + return (error); } static int -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence.