From 2608cf9e1bde821647b59926413a655c507b8f76 Mon Sep 17 00:00:00 2001 From: markster Date: Thu, 10 Feb 2005 21:14:11 +0000 Subject: Separate IAX and SIP tables for users/peers git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5004 f38db490-d61c-443f-a65b-d21fe96a405b --- channels/chan_iax2.c | 6 ++-- channels/chan_sip.c | 8 ++--- config.c | 79 +++++++++++++++++++++++++------------------ configs/extconfig.conf.sample | 6 ++-- 4 files changed, 58 insertions(+), 41 deletions(-) diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 7f80d4753..4375507fb 100755 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -2197,7 +2197,7 @@ static struct iax2_peer *realtime_peer(const char *peername) struct iax2_peer *peer=NULL; time_t regseconds, nowtime; int dynamic=0; - var = ast_load_realtime("iaxfriends", "name", peername, NULL); + var = ast_load_realtime("iaxpeers", "name", peername, NULL); if (var) { /* Make sure it's not a user only... */ peer = build_peer(peername, var, ast_test_flag((&globalflags), IAX_RTCACHEFRIENDS) ? 0 : 1); @@ -2259,7 +2259,7 @@ static struct iax2_user *realtime_user(const char *username) struct ast_variable *var; struct ast_variable *tmp; struct iax2_user *user=NULL; - var = ast_load_realtime("iaxfriends", "name", username, NULL); + var = ast_load_realtime("iaxusers", "name", username, NULL); if (var) { /* Make sure it's not a user only... */ user = build_user(username, var, !ast_test_flag((&globalflags), IAX_RTCACHEFRIENDS)); @@ -2304,7 +2304,7 @@ static void realtime_update_peer(const char *peername, struct sockaddr_in *sin) snprintf(regseconds, sizeof(regseconds), "%ld", nowtime); ast_inet_ntoa(ipaddr, sizeof(ipaddr), sin->sin_addr); snprintf(port, sizeof(port), "%d", ntohs(sin->sin_port)); - ast_update_realtime("iaxfriends", "name", peername, "ipaddr", ipaddr, "port", port, "regseconds", regseconds, NULL); + ast_update_realtime("iaxpeers", "name", peername, "ipaddr", ipaddr, "port", port, "regseconds", regseconds, NULL); } diff --git a/channels/chan_sip.c b/channels/chan_sip.c index d575adcc2..a8ab00768 100755 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -1076,7 +1076,7 @@ static void realtime_update_peer(const char *peername, struct sockaddr_in *sin, snprintf(regseconds, sizeof(regseconds), "%ld", nowtime); ast_inet_ntoa(ipaddr, sizeof(ipaddr), sin->sin_addr); snprintf(port, sizeof(port), "%d", ntohs(sin->sin_port)); - ast_update_realtime("sipfriends", "name", peername, "ipaddr", ipaddr, "port", port, "regseconds", regseconds, "username", username, NULL); + ast_update_realtime("sippeers", "name", peername, "ipaddr", ipaddr, "port", port, "regseconds", regseconds, "username", username, NULL); } static void register_peer_exten(struct sip_peer *peer, int onoff) @@ -1133,12 +1133,12 @@ static struct sip_peer *realtime_peer(const char *peername, struct sockaddr_in * struct ast_variable *tmp; if (peername) - var = ast_load_realtime("sipfriends", "name", peername, NULL); + var = ast_load_realtime("sippeers", "name", peername, NULL); else if (sin) { char iabuf[80]; ast_inet_ntoa(iabuf, sizeof(iabuf), sin->sin_addr); - var = ast_load_realtime("sipfriends", "ipaddr", iabuf, NULL); + var = ast_load_realtime("sippeers", "ipaddr", iabuf, NULL); } else return NULL; @@ -1218,7 +1218,7 @@ static struct sip_user *realtime_user(const char *username) struct ast_variable *tmp; struct sip_user *user = NULL; - var = ast_load_realtime("sipfriends", "name", username, NULL); + var = ast_load_realtime("sipusers", "name", username, NULL); if (!var) return NULL; diff --git a/config.c b/config.c index d35f38531..32a059146 100755 --- a/config.c +++ b/config.c @@ -751,12 +751,47 @@ static void clear_config_maps(void) ast_mutex_unlock(&config_lock); } +static int append_mapping(char *name, char *driver, char *database, char *table) +{ + struct ast_config_map *map; + int length; + + length = sizeof(*map); + length += strlen(name) + 1; + length += strlen(driver) + 1; + length += strlen(database) + 1; + if (table) + length += strlen(table) + 1; + map = malloc(length); + + if (!map) + return -1; + + memset(map, 0, length); + map->name = map->stuff; + strcpy(map->name, name); + map->driver = map->name + strlen(map->name) + 1; + strcpy(map->driver, driver); + map->database = map->driver + strlen(map->driver) + 1; + strcpy(map->database, database); + if (table) { + map->table = map->database + strlen(map->database) + 1; + strcpy(map->table, table); + } + map->next = config_maps; + + if (option_verbose > 1) + ast_verbose(VERBOSE_PREFIX_2 "Binding %s to %s/%s/%s\n", + map->name, map->driver, map->database, map->table ? map->table : map->name); + + config_maps = map; + return 0; +} + void read_config_maps(void) { struct ast_config *config; struct ast_variable *v; - struct ast_config_map *map; - int length; char *driver, *table, *database, *stringp; clear_config_maps(); @@ -780,36 +815,16 @@ void read_config_maps(void) if (!driver || !database) continue; - - length = sizeof(*map); - length += strlen(v->name) + 1; - length += strlen(driver) + 1; - length += strlen(database) + 1; - if (table) - length += strlen(table) + 1; - map = malloc(length); - - if (!map) - continue; - - memset(map, 0, length); - map->name = map->stuff; - strcpy(map->name, v->name); - map->driver = map->name + strlen(map->name) + 1; - strcpy(map->driver, driver); - map->database = map->driver + strlen(map->driver) + 1; - strcpy(map->database, database); - if (table) { - map->table = map->database + strlen(map->database) + 1; - strcpy(map->table, table); - } - map->next = config_maps; - - if (option_verbose > 1) - ast_verbose(VERBOSE_PREFIX_2 "Binding %s to %s/%s/%s\n", - map->name, map->driver, map->database, map->table ? map->table : map->name); - - config_maps = map; + if (!strcasecmp(v->name, "sipfriends")) { + ast_log(LOG_WARNING, "The 'sipfriends' table is obsolete, update your config to use sipusers and sippeers, though they can point to the same table.\n"); + append_mapping("sipusers", driver, database, table ? table : "sipfriends"); + append_mapping("sippeers", driver, database, table ? table : "sipfriends"); + } else if (!strcasecmp(v->name, "iaxfriends")) { + ast_log(LOG_WARNING, "The 'iaxfriends' table is obsolete, update your config to use iaxusers and iaxpeers, though they can point to the same table.\n"); + append_mapping("iaxusers", driver, database, table ? table : "iaxfriends"); + append_mapping("iaxpeers", driver, database, table ? table : "iaxfriends"); + } else + append_mapping(v->name, driver, database, table); } ast_config_destroy(config); diff --git a/configs/extconfig.conf.sample b/configs/extconfig.conf.sample index bf9f83cdc..c4b058adf 100755 --- a/configs/extconfig.conf.sample +++ b/configs/extconfig.conf.sample @@ -28,8 +28,10 @@ ; the family if the table is not specified ; ;example => odbc,asterisk,alttable -;iaxfriends => odbc,asterisk -;sipfriends => odbc,asterisk +;iaxusers => odbc,asterisk +;iaxpeers => odbc,asterisk +;sipusers => odbc,asterisk +;sippeers => odbc,asterisk ;voicemail => odbc,asterisk ;extensions => odbc,asterisk -- cgit v1.2.3