diff options
author | Mark Spencer <markster@digium.com> | 2003-09-29 20:20:04 +0000 |
---|---|---|
committer | Mark Spencer <markster@digium.com> | 2003-09-29 20:20:04 +0000 |
commit | a2126b635fb50062567f627696bd50713da07953 (patch) | |
tree | a9d8f6316fe746efa0e31ef52e55a75267e43d59 | |
parent | 229f4abf937867defe7169bc27ad24e3c5f6d5ae (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-x | asterisk.c | 8 |
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) { |