From 5ae664d5aa863e410f46742d0221bc76fca2e093 Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Mon, 16 Feb 2009 21:34:27 +0000 Subject: [PATCH] Open the DAHDI pseudo device and set it to be nonblocking atomically Apparently on FreeBSD, attempting to set the O_NONBLOCKING flag separately from opening the file was causing an "inappropriate ioctl for device" error. While I cannot fathom why this would be happening, I certainly am not opposed to making the code a bit more compact/efficient if it also fixes a bug. (closes issue #14482) Reported by: ys Patches: meetme.patch uploaded by ys (license 281) Tested by: ys git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@176249 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_meetme.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/apps/app_meetme.c b/apps/app_meetme.c index a750728344..dd9d0970bd 100644 --- a/apps/app_meetme.c +++ b/apps/app_meetme.c @@ -1728,24 +1728,13 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c zapretry: origfd = chan->fds[0]; if (retryzap) { - fd = open(DAHDI_FILE_PSEUDO, O_RDWR); + /* open pseudo in non-blocking mode */ + fd = open(DAHDI_FILE_PSEUDO, O_RDWR | O_NONBLOCK); if (fd < 0) { ast_log(LOG_WARNING, "Unable to open pseudo channel: %s\n", strerror(errno)); goto outrun; } using_pseudo = 1; - /* Make non-blocking */ - flags = fcntl(fd, F_GETFL); - if (flags < 0) { - ast_log(LOG_WARNING, "Unable to get flags: %s\n", strerror(errno)); - close(fd); - goto outrun; - } - if (fcntl(fd, F_SETFL, flags | O_NONBLOCK)) { - ast_log(LOG_WARNING, "Unable to set flags: %s\n", strerror(errno)); - close(fd); - goto outrun; - } /* Setup buffering information */ memset(&bi, 0, sizeof(bi)); bi.bufsize = CONF_SIZE/2; -- 2.47.3