mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-20 03:59:01 +00:00
Change the fd on the I/O context in case it changed during the reload, which is indeed possible. (issue #7943 reported by eclubb)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@44213 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -438,6 +438,7 @@ static int expiry = DEFAULT_EXPIRY;
|
|||||||
|
|
||||||
static struct sched_context *sched;
|
static struct sched_context *sched;
|
||||||
static struct io_context *io;
|
static struct io_context *io;
|
||||||
|
static int *sipsock_read_id;
|
||||||
|
|
||||||
#define SIP_MAX_HEADERS 64 /*!< Max amount of SIP headers to read */
|
#define SIP_MAX_HEADERS 64 /*!< Max amount of SIP headers to read */
|
||||||
#define SIP_MAX_LINES 64 /*!< Max amount of lines in SIP attachment (like SDP) */
|
#define SIP_MAX_LINES 64 /*!< Max amount of lines in SIP attachment (like SDP) */
|
||||||
@@ -11441,7 +11442,7 @@ static void *do_monitor(void *data)
|
|||||||
|
|
||||||
/* Add an I/O event to our UDP socket */
|
/* Add an I/O event to our UDP socket */
|
||||||
if (sipsock > -1)
|
if (sipsock > -1)
|
||||||
ast_io_add(io, sipsock, sipsock_read, AST_IO_IN, NULL);
|
sipsock_read_id = ast_io_add(io, sipsock, sipsock_read, AST_IO_IN, NULL);
|
||||||
|
|
||||||
/* This thread monitors all the frame relay interfaces which are not yet in use
|
/* This thread monitors all the frame relay interfaces which are not yet in use
|
||||||
(and thus do not have a separate thread) indefinitely */
|
(and thus do not have a separate thread) indefinitely */
|
||||||
@@ -11456,6 +11457,10 @@ static void *do_monitor(void *data)
|
|||||||
if (option_verbose > 0)
|
if (option_verbose > 0)
|
||||||
ast_verbose(VERBOSE_PREFIX_1 "Reloading SIP\n");
|
ast_verbose(VERBOSE_PREFIX_1 "Reloading SIP\n");
|
||||||
sip_do_reload();
|
sip_do_reload();
|
||||||
|
|
||||||
|
/* Change the I/O fd of our UDP socket */
|
||||||
|
if (sipsock > -1)
|
||||||
|
sipsock_read_id = ast_io_change(io, sipsock_read_id, sipsock, NULL, 0, NULL);
|
||||||
}
|
}
|
||||||
/* Check for interfaces needing to be killed */
|
/* Check for interfaces needing to be killed */
|
||||||
ast_mutex_lock(&iflock);
|
ast_mutex_lock(&iflock);
|
||||||
|
Reference in New Issue
Block a user