From 68ba81dfe68fe8cf78d98082ff41b141db6280bc Mon Sep 17 00:00:00 2001 From: David Vossel <dvossel@digium.com> Date: Wed, 17 Jun 2009 21:56:42 +0000 Subject: [PATCH] Add rtsavesysname to chan_iax chan_sip has an option to save the sysname on rtupdate. This patch copies that same logic to chan_iax. (closes issue #14837) Reported by: barthpbx Patches: iax2-rtsavesysname.patch uploaded by barthpbx (license 744) rt_iax.diff uploaded by dvossel (license 671) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@201534 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- CHANGES | 5 +++++ channels/chan_iax2.c | 15 ++++++++++++--- configs/iax.conf.sample | 3 +++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 087a7a9cda..64f6fba1ff 100644 --- a/CHANGES +++ b/CHANGES @@ -34,6 +34,11 @@ SIP Changes but will generate a warning in the log indicating that the SIP peer that sent the SDP should have the 'ignoresdpversion' option set. +IAX2 Changes +----------- + * Added rtsavesysname option into iax.conf to allow the systname to be saved + on realtime updates. + Applications ------------ * Added progress option to the app_dial D() option. When progress DTMF is diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 4e0cc1e3f8..a5c6b41a8b 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -398,7 +398,7 @@ struct iax2_context { #define IAX_USEJITTERBUF (uint64_t)(1 << 5) /*!< Use jitter buffer */ #define IAX_DYNAMIC (uint64_t)(1 << 6) /*!< dynamic peer */ #define IAX_SENDANI (uint64_t)(1 << 7) /*!< Send ANI along with CallerID */ - /* (1 << 8) is currently unused due to the deprecation of an old option. Go ahead, take it! */ +#define IAX_RTSAVE_SYSNAME (uint64_t)(1 << 8) /*!< Save Systname on Realtime Updates */ #define IAX_ALREADYGONE (uint64_t)(1 << 9) /*!< Already disconnected */ #define IAX_PROVISION (uint64_t)(1 << 10) /*!< This is a provisioning request */ #define IAX_QUELCH (uint64_t)(1 << 11) /*!< Whether or not we quelch audio */ @@ -3627,12 +3627,19 @@ static void realtime_update_peer(const char *peername, struct sockaddr_in *sin, { char port[10]; char regseconds[20]; - + const char *sysname = ast_config_AST_SYSTEM_NAME; + char *syslabel = NULL; + + if (ast_strlen_zero(sysname)) /* No system name, disable this */ + sysname = NULL; + else if (ast_test_flag64(&globalflags, IAX_RTSAVE_SYSNAME)) + syslabel = "regserver"; + snprintf(regseconds, sizeof(regseconds), "%d", (int)regtime); snprintf(port, sizeof(port), "%d", ntohs(sin->sin_port)); ast_update_realtime("iaxpeers", "name", peername, "ipaddr", ast_inet_ntoa(sin->sin_addr), "port", port, - "regseconds", regseconds, SENTINEL); + "regseconds", regseconds, syslabel, sysname, SENTINEL); /* note syslable can be NULL */ } struct create_addr_info { @@ -11644,6 +11651,8 @@ static int set_config(char *config_file, int reload) ast_set2_flag64((&globalflags), ast_true(v->value), IAX_RTIGNOREREGEXPIRE); else if (!strcasecmp(v->name, "rtupdate")) ast_set2_flag64((&globalflags), ast_true(v->value), IAX_RTUPDATE); + else if (!strcasecmp(v->name, "rtsavesysname")) + ast_set2_flag64((&globalflags), ast_true(v->value), IAX_RTSAVE_SYSNAME); else if (!strcasecmp(v->name, "trunktimestamps")) ast_set2_flag64(&globalflags, ast_true(v->value), IAX_TRUNKTIMESTAMPS); else if (!strcasecmp(v->name, "rtautoclear")) { diff --git a/configs/iax.conf.sample b/configs/iax.conf.sample index 562a4e6c86..ffe433b6b3 100644 --- a/configs/iax.conf.sample +++ b/configs/iax.conf.sample @@ -287,6 +287,9 @@ autokill=yes ; just like friends added from the config file only on a ; as-needed basis? (yes|no) +;rtsavesysname=yes ; Save systemname in realtime database at registration + ; Default = no + ;rtupdate=yes ; Send registry updates to database using realtime? (yes|no) ; If set to yes, when a IAX2 peer registers successfully, ; the ip address, the origination port, the registration period, -- GitLab