From a2126b635fb50062567f627696bd50713da07953 Mon Sep 17 00:00:00 2001
From: Mark Spencer <markster@digium.com>
Date: Mon, 29 Sep 2003 20:20:04 +0000
Subject: [PATCH] Check with select before accept (bug #325)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1580 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 asterisk.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/asterisk.c b/asterisk.c
index 58fb6f3d09..ac7173f4f2 100755
--- a/asterisk.c
+++ b/asterisk.c
@@ -216,6 +216,7 @@ static void *netconsole(void *vconsole)
 static void *listener(void *unused)
 {
 	struct sockaddr_un sun;
+	fd_set fds;
 	int s;
 	int len;
 	int x;
@@ -226,6 +227,13 @@ static void *listener(void *unused)
 	for(;;) {
 		if (ast_socket < 0)
 			return NULL;
+		FD_ZERO(&fds);
+		FD_SET(ast_socket, &fds);
+		s = ast_select(ast_socket + 1, &fds, NULL, NULL, NULL);
+		if (s < 0) {
+			ast_log(LOG_WARNING, "Select retured error: %s\n", strerror(errno));
+			continue;
+		}
 		len = sizeof(sun);
 		s = accept(ast_socket, (struct sockaddr *)&sun, &len);
 		if (s < 0) {
-- 
GitLab