mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-09 19:38:22 +00:00
res_rtp_asterisk & udptl: fix port selection to work with SELinux restrictions
ast_bind to a port reserved for another program by SELinux causes errno == EACCES. This caused random failures when binding rtp or udptl sockets. Treat EACCES as a non-fatal error, try next port. (closes issue ASTERISK-23134) Reported by: Corey Farrell git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@406933 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -968,7 +968,7 @@ struct ast_udptl *ast_udptl_new_with_bindaddr(struct sched_context *sched, struc
|
||||
if (ast_bind(udptl->fd, &udptl->us) == 0) {
|
||||
break;
|
||||
}
|
||||
if (errno != EADDRINUSE) {
|
||||
if (errno != EADDRINUSE && errno != EACCES) {
|
||||
ast_log(LOG_WARNING, "Unexpected bind error: %s\n", strerror(errno));
|
||||
close(udptl->fd);
|
||||
ast_free(udptl);
|
||||
|
||||
@@ -596,7 +596,7 @@ static int ast_rtp_new(struct ast_rtp_instance *instance,
|
||||
}
|
||||
|
||||
/* See if we ran out of ports or if the bind actually failed because of something other than the address being in use */
|
||||
if (x == startplace || errno != EADDRINUSE) {
|
||||
if (x == startplace || (errno != EADDRINUSE && errno != EACCES)) {
|
||||
ast_log(LOG_ERROR, "Oh dear... we couldn't allocate a port for RTP instance '%p'\n", instance);
|
||||
close(rtp->s);
|
||||
ast_free(rtp);
|
||||
|
||||
Reference in New Issue
Block a user