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
certified/1.8.6
David Vossel 17 years ago
parent 7b37a60418
commit 68ba81dfe6

@ -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

@ -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")) {

@ -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,

Loading…
Cancel
Save