re-bind the socket if the bindaddr option is changed during reload (issue #5435)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6762 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
parent
57ae02b3c2
commit
9ba261ff56
|
@ -851,7 +851,7 @@ static int __sip_do_register(struct sip_registry *r);
|
|||
static int sipsock = -1;
|
||||
|
||||
|
||||
static struct sockaddr_in bindaddr;
|
||||
static struct sockaddr_in bindaddr = { 0, };
|
||||
static struct sockaddr_in externip;
|
||||
static char externhost[MAXHOSTNAMELEN] = "";
|
||||
static time_t externexpire = 0;
|
||||
|
@ -12079,11 +12079,10 @@ static int reload_config(void)
|
|||
char *utype;
|
||||
struct hostent *hp;
|
||||
int format;
|
||||
int oldport = ntohs(bindaddr.sin_port);
|
||||
char iabuf[INET_ADDRSTRLEN];
|
||||
struct ast_flags dummy;
|
||||
int auto_sip_domains = 0;
|
||||
|
||||
struct sockaddr_in old_bindaddr = bindaddr;
|
||||
|
||||
cfg = ast_config_load(config);
|
||||
|
||||
|
@ -12389,7 +12388,7 @@ static int reload_config(void)
|
|||
bindaddr.sin_port = ntohs(DEFAULT_SIP_PORT);
|
||||
bindaddr.sin_family = AF_INET;
|
||||
ast_mutex_lock(&netlock);
|
||||
if ((sipsock > -1) && (ntohs(bindaddr.sin_port) != oldport)) {
|
||||
if ((sipsock > -1) && (memcmp(&old_bindaddr, &bindaddr, sizeof(struct sockaddr_in)))) {
|
||||
close(sipsock);
|
||||
sipsock = -1;
|
||||
}
|
||||
|
|
Reference in New Issue