mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@42107 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -2740,18 +2740,16 @@ static struct iax2_user *realtime_user(const char *username)
|
||||
return user;
|
||||
}
|
||||
|
||||
static void realtime_update_peer(const char *peername, struct sockaddr_in *sin)
|
||||
static void realtime_update_peer(const char *peername, struct sockaddr_in *sin, time_t regtime)
|
||||
{
|
||||
char port[10];
|
||||
char ipaddr[20];
|
||||
char regseconds[20];
|
||||
time_t nowtime;
|
||||
char port[10];
|
||||
char ipaddr[20];
|
||||
char regseconds[20];
|
||||
|
||||
time(&nowtime);
|
||||
snprintf(regseconds, sizeof(regseconds), "%d", (int)nowtime);
|
||||
ast_inet_ntoa(ipaddr, sizeof(ipaddr), sin->sin_addr);
|
||||
snprintf(port, sizeof(port), "%d", ntohs(sin->sin_port));
|
||||
ast_update_realtime("iaxpeers", "name", peername, "ipaddr", ipaddr, "port", port, "regseconds", regseconds, NULL);
|
||||
snprintf(regseconds, sizeof(regseconds), "%d", (int)regtime);
|
||||
ast_inet_ntoa(ipaddr, sizeof(ipaddr), sin->sin_addr);
|
||||
snprintf(port, sizeof(port), "%d", ntohs(sin->sin_port));
|
||||
ast_update_realtime("iaxpeers", "name", peername, "ipaddr", ipaddr, "port", port, "regseconds", regseconds, NULL);
|
||||
}
|
||||
|
||||
struct create_addr_info {
|
||||
@@ -5654,6 +5652,8 @@ static int expire_registry(void *data)
|
||||
struct iax2_peer *p = data;
|
||||
|
||||
ast_log(LOG_DEBUG, "Expiring registration for peer '%s'\n", p->name);
|
||||
if (ast_test_flag((&globalflags), IAX_RTUPDATE) && (ast_test_flag(p, IAX_TEMPONLY|IAX_RTCACHEFRIENDS)))
|
||||
realtime_update_peer(p->name, &p->addr, 0);
|
||||
/* Reset the address */
|
||||
memset(&p->addr, 0, sizeof(p->addr));
|
||||
/* Reset expire notice */
|
||||
@@ -5735,8 +5735,14 @@ static int update_registry(char *name, struct sockaddr_in *sin, int callno, char
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (ast_test_flag((&globalflags), IAX_RTUPDATE) && (ast_test_flag(p, IAX_TEMPONLY|IAX_RTCACHEFRIENDS)))
|
||||
realtime_update_peer(name, sin);
|
||||
if (ast_test_flag((&globalflags), IAX_RTUPDATE) && (ast_test_flag(p, IAX_TEMPONLY|IAX_RTCACHEFRIENDS))) {
|
||||
if (sin->sin_addr.s_addr) {
|
||||
time_t nowtime;
|
||||
time(&nowtime);
|
||||
realtime_update_peer(name, sin, nowtime);
|
||||
} else
|
||||
realtime_update_peer(name, sin, 0);
|
||||
}
|
||||
if (inaddrcmp(&p->addr, sin)) {
|
||||
if (iax2_regfunk)
|
||||
iax2_regfunk(p->name, 1);
|
||||
|
Reference in New Issue
Block a user