summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Spencer <markster@digium.com>2003-09-29 20:20:04 +0000
committerMark Spencer <markster@digium.com>2003-09-29 20:20:04 +0000
commita2126b635fb50062567f627696bd50713da07953 (patch)
treea9d8f6316fe746efa0e31ef52e55a75267e43d59
parent229f4abf937867defe7169bc27ad24e3c5f6d5ae (diff)
Check with select before accept (bug #325)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1580 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rwxr-xr-xasterisk.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/asterisk.c b/asterisk.c
index 58fb6f3d0..ac7173f4f 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) {