]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix multiple SIP realtime issues
authorTerry Wilson <twilson@digium.com>
Tue, 7 Feb 2012 21:17:10 +0000 (21:17 +0000)
committerTerry Wilson <twilson@digium.com>
Tue, 7 Feb 2012 21:17:10 +0000 (21:17 +0000)
1. Set lastms to 0 when clearing instead of ""
2. Don't set ipaddr or port to the string "(null)" when they are empty
3. Add missing required fields, set default for lastms to 0, and modify
   the length of the ipaddr field to 45 in the Postgresql realtime.sql
   file.

(closes issue ASTERISK-19172)
Review: https://reviewboard.asterisk.org/r/1703/
........

Merged revisions 354348 from http://svn.asterisk.org/svn/asterisk/branches/1.8

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@354349 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c
contrib/realtime/postgresql/realtime.sql

index c0e0bc05ea1f587075b9d42c0d1fc2bfdfa15d14..d1eeea1447da783625ddb090efd776d8c1a5ba09 100644 (file)
@@ -4547,8 +4547,8 @@ static void realtime_update_peer(const char *peername, struct ast_sockaddr *addr
 
        snprintf(str_lastms, sizeof(str_lastms), "%d", lastms);
        snprintf(regseconds, sizeof(regseconds), "%d", (int)nowtime);   /* Expiration time */
-       ast_copy_string(ipaddr, ast_sockaddr_stringify_addr(addr), sizeof(ipaddr));
-       ast_copy_string(port, ast_sockaddr_stringify_port(addr), sizeof(port));
+       ast_copy_string(ipaddr, ast_sockaddr_isnull(addr) ? "" : ast_sockaddr_stringify_addr(addr), sizeof(ipaddr));
+       ast_copy_string(port, ast_sockaddr_port(addr) ? ast_sockaddr_stringify_port(addr) : "", sizeof(port));
 
        if (ast_strlen_zero(sysname))   /* No system name, disable this */
                sysname = NULL;
@@ -14047,7 +14047,7 @@ static void destroy_association(struct sip_peer *peer)
 
        if (!sip_cfg.ignore_regexpire) {
                if (peer->rt_fromcontact && sip_cfg.peer_rtupdate) {
-                       ast_update_realtime(tablename, "name", peer->name, "fullcontact", "", "ipaddr", "", "port", "", "regseconds", "0", "regserver", "", "useragent", "", "lastms", "", SENTINEL);
+                       ast_update_realtime(tablename, "name", peer->name, "fullcontact", "", "ipaddr", "", "port", "", "regseconds", "0", "regserver", "", "useragent", "", "lastms", "0", SENTINEL);
                } else {
                        ast_db_del("SIP/Registry", peer->name);
                        ast_db_del("SIP/PeerMethods", peer->name);
index 74b895738f6d20a3c2e263891090b1bae60cb754..f14cd7933925b455d4337c2094f014a28c2f0177 100644 (file)
@@ -65,10 +65,14 @@ disallow character varying(100) DEFAULT 'all',
 allow character varying(100) DEFAULT 'g729;ilbc;gsm;ulaw;alaw',
 musiconhold character varying(100),
 regseconds bigint DEFAULT 0::bigint NOT NULL,
-ipaddr character varying(40) DEFAULT '' NOT NULL,
+ipaddr character varying(45) DEFAULT '' NOT NULL,
 regexten character varying(80) DEFAULT '' NOT NULL,
 cancallforward character varying(3) DEFAULT 'yes',
-lastms integer DEFAULT -1 NOT NULL
+lastms integer DEFAULT 0 NOT NULL,
+defaultuser character varying(80),
+fullcontact character varying(80),
+regserver character varying(30),
+useragent character varying(40)
 );
 
 drop table voicemail_users;