Index: chan_iax2.c =================================================================== --- chan_iax2.c (Revision 186619) +++ chan_iax2.c (Arbeitskopie) @@ -270,6 +270,7 @@ response, so that we've achieved a three-way handshake with them before sending voice or anything else*/ IAX_ALLOWFWDOWNLOAD = (1 << 26), /*!< Allow the FWDOWNL command? */ + IAX_RTSAVE_SYSNAME = (1 << 27), /*!< Save Systname on Realtime Updates */ } iax2_flags; static int global_rtautoclear = 120; @@ -3140,12 +3141,19 @@ { char port[10]; char regseconds[20]; - - snprintf(regseconds, sizeof(regseconds), "%d", (int)regtime); + 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_flag(&globalflags, IAX_RTSAVE_SYSNAME)) + syslabel = "regserver"; + + printf(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, NULL); + ast_update_realtime("iaxpeers", "name", peername, "ipaddr", ast_inet_ntoa(sin->sin_addr), + "port", port, "regseconds", regseconds, + syslabel, sysname, NULL); /* note syslabel _can_ be NULL */ } struct create_addr_info { @@ -10287,6 +10295,8 @@ ast_set2_flag((&globalflags), ast_true(v->value), IAX_RTIGNOREREGEXPIRE); else if (!strcasecmp(v->name, "rtupdate")) ast_set2_flag((&globalflags), ast_true(v->value), IAX_RTUPDATE); + else if (!strcasecmp(v->name, "rtsavesysname")) + ast_set2_flag((&globalflags), ast_true(v->value), IAX_RTSAVE_SYSNAME); else if (!strcasecmp(v->name, "trunktimestamps")) ast_set2_flag(&globalflags, ast_true(v->value), IAX_TRUNKTIMESTAMPS); else if (!strcasecmp(v->name, "rtautoclear")) {