diff --git a/channels/chan_sip.c b/channels/chan_sip.c index adc6a3bc88..73a1dedc43 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -4550,8 +4550,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; @@ -14081,7 +14081,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); diff --git a/contrib/realtime/postgresql/realtime.sql b/contrib/realtime/postgresql/realtime.sql index fb474ebbe2..d6619061e9 100644 --- a/contrib/realtime/postgresql/realtime.sql +++ b/contrib/realtime/postgresql/realtime.sql @@ -64,10 +64,14 @@ username character varying(80) DEFAULT '' NOT NULL, allow character varying(200) DEFAULT '!all,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;