<p>George Joseph <strong>submitted</strong> this change.</p><p><a href="https://gerrit.asterisk.org/c/asterisk/+/16320">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Sean Bright: Looks good to me, but someone else must approve
  George Joseph: Looks good to me, approved
  Joshua Colp: Approved for Submit

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">chan_nbs: Remove deprecated module.<br><br>ASTERISK-29595<br><br>Change-Id: Ib5c7d43a780f2fb94cee90738e4c1af211ae4a33<br>---<br>M build_tools/menuselect-deps.in<br>D channels/chan_nbs.c<br>M configure<br>M configure.ac<br>M contrib/scripts/install_prereq<br>A doc/UPGRADE-staging/chan_nbs_removal.txt<br>M include/asterisk/autoconfig.h.in<br>M makeopts.in<br>8 files changed, 6 insertions(+), 426 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/build_tools/menuselect-deps.in b/build_tools/menuselect-deps.in</span><br><span>index f809106..a1a2742 100644</span><br><span>--- a/build_tools/menuselect-deps.in</span><br><span>+++ b/build_tools/menuselect-deps.in</span><br><span>@@ -36,7 +36,6 @@</span><br><span> LUA=@PBX_LUA@</span><br><span> MISDN=@PBX_MISDN@</span><br><span> MYSQLCLIENT=@PBX_MYSQLCLIENT@</span><br><span style="color: hsl(0, 100%, 40%);">-NBS=@PBX_NBS@</span><br><span> NETSNMP=@PBX_NETSNMP@</span><br><span> NEWT=@PBX_NEWT@</span><br><span> NEON=@PBX_NEON@</span><br><span>diff --git a/channels/chan_nbs.c b/channels/chan_nbs.c</span><br><span>deleted file mode 100644</span><br><span>index c7c842a..0000000</span><br><span>--- a/channels/chan_nbs.c</span><br><span>+++ /dev/null</span><br><span>@@ -1,275 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">- * Asterisk -- An open source telephony toolkit.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Copyright (C) 1999 - 2006, Digium, Inc.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Mark Spencer <markster@digium.com></span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * See http://www.asterisk.org for more information about</span><br><span style="color: hsl(0, 100%, 40%);">- * the Asterisk project. Please do not directly contact</span><br><span style="color: hsl(0, 100%, 40%);">- * any of the maintainers of this project for assistance;</span><br><span style="color: hsl(0, 100%, 40%);">- * the project provides a web site, mailing lists and IRC</span><br><span style="color: hsl(0, 100%, 40%);">- * channels for your use.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is free software, distributed under the terms of</span><br><span style="color: hsl(0, 100%, 40%);">- * the GNU General Public License Version 2. See the LICENSE file</span><br><span style="color: hsl(0, 100%, 40%);">- * at the top of the source tree.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/*! \file</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Network broadcast sound support channel driver</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \author Mark Spencer <markster@digium.com></span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \ingroup channel_drivers</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/*** MODULEINFO</span><br><span style="color: hsl(0, 100%, 40%);">-   <depend>nbs</depend></span><br><span style="color: hsl(0, 100%, 40%);">-        <support_level>deprecated</support_level></span><br><span style="color: hsl(0, 100%, 40%);">-   <deprecated_in>16</deprecated_in></span><br><span style="color: hsl(0, 100%, 40%);">-   <removed_in>19</removed_in></span><br><span style="color: hsl(0, 100%, 40%);">- ***/</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include "asterisk.h"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <sys/socket.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <sys/time.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <arpa/inet.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <fcntl.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <sys/ioctl.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <nbs.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include "asterisk/lock.h"</span><br><span style="color: hsl(0, 100%, 40%);">-#include "asterisk/channel.h"</span><br><span style="color: hsl(0, 100%, 40%);">-#include "asterisk/config.h"</span><br><span style="color: hsl(0, 100%, 40%);">-#include "asterisk/module.h"</span><br><span style="color: hsl(0, 100%, 40%);">-#include "asterisk/pbx.h"</span><br><span style="color: hsl(0, 100%, 40%);">-#include "asterisk/utils.h"</span><br><span style="color: hsl(0, 100%, 40%);">-#include "asterisk/format_cache.h"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static const char tdesc[] = "Network Broadcast Sound Driver";</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static char context[AST_MAX_EXTENSION] = "default";</span><br><span style="color: hsl(0, 100%, 40%);">-static const char type[] = "NBS";</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* NBS creates private structures on demand */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-struct nbs_pvt {</span><br><span style="color: hsl(0, 100%, 40%);">-       NBS *nbs;</span><br><span style="color: hsl(0, 100%, 40%);">-       struct ast_channel *owner;              /* Channel we belong to, possibly NULL */</span><br><span style="color: hsl(0, 100%, 40%);">-       char app[16];                                   /* Our app */</span><br><span style="color: hsl(0, 100%, 40%);">-   char stream[80];                                /* Our stream */</span><br><span style="color: hsl(0, 100%, 40%);">-        struct ast_module_user *u;              /*! for holding a reference to this module */</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static struct ast_channel *nbs_request(const char *type, struct ast_format_cap *cap, const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor, const char *data, int *cause);</span><br><span style="color: hsl(0, 100%, 40%);">-static int nbs_call(struct ast_channel *ast, const char *dest, int timeout);</span><br><span style="color: hsl(0, 100%, 40%);">-static int nbs_hangup(struct ast_channel *ast);</span><br><span style="color: hsl(0, 100%, 40%);">-static struct ast_frame *nbs_xread(struct ast_channel *ast);</span><br><span style="color: hsl(0, 100%, 40%);">-static int nbs_xwrite(struct ast_channel *ast, struct ast_frame *frame);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static struct ast_channel_tech nbs_tech = {</span><br><span style="color: hsl(0, 100%, 40%);">-   .type = type,</span><br><span style="color: hsl(0, 100%, 40%);">-   .description = tdesc,</span><br><span style="color: hsl(0, 100%, 40%);">-   .requester = nbs_request,</span><br><span style="color: hsl(0, 100%, 40%);">-       .call = nbs_call,</span><br><span style="color: hsl(0, 100%, 40%);">-       .hangup = nbs_hangup,</span><br><span style="color: hsl(0, 100%, 40%);">-   .read = nbs_xread,</span><br><span style="color: hsl(0, 100%, 40%);">-      .write = nbs_xwrite,</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static int nbs_call(struct ast_channel *ast, const char *dest, int timeout)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-      struct nbs_pvt *p;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      p = ast_channel_tech_pvt(ast);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  if ((ast_channel_state(ast) != AST_STATE_DOWN) && (ast_channel_state(ast) != AST_STATE_RESERVED)) {</span><br><span style="color: hsl(0, 100%, 40%);">-             ast_log(LOG_WARNING, "nbs_call called on %s, neither down nor reserved\n", ast_channel_name(ast));</span><br><span style="color: hsl(0, 100%, 40%);">-            return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-       /* When we call, it just works, really, there's no destination...  Just</span><br><span style="color: hsl(0, 100%, 40%);">-        ring the phone and wait for someone to answer */</span><br><span style="color: hsl(0, 100%, 40%);">-     ast_debug(1, "Calling %s on %s\n", dest, ast_channel_name(ast));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      /* If we can't connect, return congestion */</span><br><span style="color: hsl(0, 100%, 40%);">-        if (nbs_connect(p->nbs)) {</span><br><span style="color: hsl(0, 100%, 40%);">-           ast_log(LOG_WARNING, "NBS Connection failed on %s\n", ast_channel_name(ast));</span><br><span style="color: hsl(0, 100%, 40%);">-         ast_queue_control(ast, AST_CONTROL_CONGESTION);</span><br><span style="color: hsl(0, 100%, 40%);">- } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                ast_setstate(ast, AST_STATE_RINGING);</span><br><span style="color: hsl(0, 100%, 40%);">-           ast_queue_control(ast, AST_CONTROL_ANSWER);</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static void nbs_destroy(struct nbs_pvt *p)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-   if (p->nbs)</span><br><span style="color: hsl(0, 100%, 40%);">-          nbs_delstream(p->nbs);</span><br><span style="color: hsl(0, 100%, 40%);">-       ast_module_user_remove(p->u);</span><br><span style="color: hsl(0, 100%, 40%);">-        ast_free(p);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static struct nbs_pvt *nbs_alloc(const char *data)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-        struct nbs_pvt *p;</span><br><span style="color: hsl(0, 100%, 40%);">-      int flags = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-  char stream[256];</span><br><span style="color: hsl(0, 100%, 40%);">-       char *opts;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     ast_copy_string(stream, data, sizeof(stream));</span><br><span style="color: hsl(0, 100%, 40%);">-  if ((opts = strchr(stream, ':'))) {</span><br><span style="color: hsl(0, 100%, 40%);">-             *opts = '\0';</span><br><span style="color: hsl(0, 100%, 40%);">-           opts++;</span><br><span style="color: hsl(0, 100%, 40%);">- } else</span><br><span style="color: hsl(0, 100%, 40%);">-          opts = "";</span><br><span style="color: hsl(0, 100%, 40%);">-    p = ast_calloc(1, sizeof(*p));</span><br><span style="color: hsl(0, 100%, 40%);">-  if (p) {</span><br><span style="color: hsl(0, 100%, 40%);">-                if (!ast_strlen_zero(opts)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                   if (strchr(opts, 'm'))</span><br><span style="color: hsl(0, 100%, 40%);">-                          flags |= NBS_FLAG_MUTE;</span><br><span style="color: hsl(0, 100%, 40%);">-                 if (strchr(opts, 'o'))</span><br><span style="color: hsl(0, 100%, 40%);">-                          flags |= NBS_FLAG_OVERSPEAK;</span><br><span style="color: hsl(0, 100%, 40%);">-                    if (strchr(opts, 'e'))</span><br><span style="color: hsl(0, 100%, 40%);">-                          flags |= NBS_FLAG_EMERGENCY;</span><br><span style="color: hsl(0, 100%, 40%);">-                    if (strchr(opts, 'O'))</span><br><span style="color: hsl(0, 100%, 40%);">-                          flags |= NBS_FLAG_OVERRIDE;</span><br><span style="color: hsl(0, 100%, 40%);">-             } else</span><br><span style="color: hsl(0, 100%, 40%);">-                  flags = NBS_FLAG_OVERSPEAK;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-             ast_copy_string(p->stream, stream, sizeof(p->stream));</span><br><span style="color: hsl(0, 100%, 40%);">-            p->nbs = nbs_newstream("asterisk", stream, flags);</span><br><span style="color: hsl(0, 100%, 40%);">-         if (!p->nbs) {</span><br><span style="color: hsl(0, 100%, 40%);">-                       ast_log(LOG_WARNING, "Unable to allocate new NBS stream '%s' with flags %d\n", stream, flags);</span><br><span style="color: hsl(0, 100%, 40%);">-                        ast_free(p);</span><br><span style="color: hsl(0, 100%, 40%);">-                    p = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-               } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                        /* Set for 8000 hz mono, 640 samples */</span><br><span style="color: hsl(0, 100%, 40%);">-                 nbs_setbitrate(p->nbs, 8000);</span><br><span style="color: hsl(0, 100%, 40%);">-                        nbs_setchannels(p->nbs, 1);</span><br><span style="color: hsl(0, 100%, 40%);">-                  nbs_setblocksize(p->nbs, 640);</span><br><span style="color: hsl(0, 100%, 40%);">-                       nbs_setblocking(p->nbs, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-          }</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-       return p;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static int nbs_hangup(struct ast_channel *ast)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-       struct nbs_pvt *p;</span><br><span style="color: hsl(0, 100%, 40%);">-      p = ast_channel_tech_pvt(ast);</span><br><span style="color: hsl(0, 100%, 40%);">-  ast_debug(1, "nbs_hangup(%s)\n", ast_channel_name(ast));</span><br><span style="color: hsl(0, 100%, 40%);">-      if (!ast_channel_tech_pvt(ast)) {</span><br><span style="color: hsl(0, 100%, 40%);">-               ast_log(LOG_WARNING, "Asked to hangup channel not connected\n");</span><br><span style="color: hsl(0, 100%, 40%);">-              return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-       nbs_destroy(p);</span><br><span style="color: hsl(0, 100%, 40%);">- ast_channel_tech_pvt_set(ast, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-    ast_setstate(ast, AST_STATE_DOWN);</span><br><span style="color: hsl(0, 100%, 40%);">-      return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static struct ast_frame  *nbs_xread(struct ast_channel *ast)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- ast_debug(1, "Returning null frame on %s\n", ast_channel_name(ast));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  return &ast_null_frame;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static int nbs_xwrite(struct ast_channel *ast, struct ast_frame *frame)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-    struct nbs_pvt *p = ast_channel_tech_pvt(ast);</span><br><span style="color: hsl(0, 100%, 40%);">-  if (ast_channel_state(ast) != AST_STATE_UP) {</span><br><span style="color: hsl(0, 100%, 40%);">-           /* Don't try tos end audio on-hook */</span><br><span style="color: hsl(0, 100%, 40%);">-               return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-       if (nbs_write(p->nbs, frame->data.ptr, frame->datalen / 2) < 0)</span><br><span style="color: hsl(0, 100%, 40%);">-             return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-      return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static struct ast_channel *nbs_new(struct nbs_pvt *i, int state, const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-    struct ast_channel *tmp;</span><br><span style="color: hsl(0, 100%, 40%);">-        tmp = ast_channel_alloc(1, state, 0, 0, "", "s", context, assignedids, requestor, 0, "NBS/%s", i->stream);</span><br><span style="color: hsl(0, 100%, 40%);">-     if (tmp) {</span><br><span style="color: hsl(0, 100%, 40%);">-              ast_channel_tech_set(tmp, &nbs_tech);</span><br><span style="color: hsl(0, 100%, 40%);">-               ast_channel_set_fd(tmp, 0, nbs_fd(i->nbs));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-          ast_channel_nativeformats_set(tmp, nbs_tech.capabilities);</span><br><span style="color: hsl(0, 100%, 40%);">-              ast_channel_set_rawreadformat(tmp, ast_format_slin);</span><br><span style="color: hsl(0, 100%, 40%);">-            ast_channel_set_rawwriteformat(tmp, ast_format_slin);</span><br><span style="color: hsl(0, 100%, 40%);">-           ast_channel_set_writeformat(tmp, ast_format_slin);</span><br><span style="color: hsl(0, 100%, 40%);">-              ast_channel_set_readformat(tmp, ast_format_slin);</span><br><span style="color: hsl(0, 100%, 40%);">-               if (state == AST_STATE_RING)</span><br><span style="color: hsl(0, 100%, 40%);">-                    ast_channel_rings_set(tmp, 1);</span><br><span style="color: hsl(0, 100%, 40%);">-          ast_channel_tech_pvt_set(tmp, i);</span><br><span style="color: hsl(0, 100%, 40%);">-               ast_channel_context_set(tmp, context);</span><br><span style="color: hsl(0, 100%, 40%);">-          ast_channel_exten_set(tmp, "s");</span><br><span style="color: hsl(0, 100%, 40%);">-              ast_channel_language_set(tmp, "");</span><br><span style="color: hsl(0, 100%, 40%);">-            i->owner = tmp;</span><br><span style="color: hsl(0, 100%, 40%);">-              i->u = ast_module_user_add(tmp);</span><br><span style="color: hsl(0, 100%, 40%);">-             ast_channel_unlock(tmp);</span><br><span style="color: hsl(0, 100%, 40%);">-                if (state != AST_STATE_DOWN) {</span><br><span style="color: hsl(0, 100%, 40%);">-                  if (ast_pbx_start(tmp)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                               ast_log(LOG_WARNING, "Unable to start PBX on %s\n", ast_channel_name(tmp));</span><br><span style="color: hsl(0, 100%, 40%);">-                           ast_hangup(tmp);</span><br><span style="color: hsl(0, 100%, 40%);">-                        }</span><br><span style="color: hsl(0, 100%, 40%);">-               }</span><br><span style="color: hsl(0, 100%, 40%);">-       } else</span><br><span style="color: hsl(0, 100%, 40%);">-          ast_log(LOG_WARNING, "Unable to allocate channel structure\n");</span><br><span style="color: hsl(0, 100%, 40%);">-       return tmp;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static struct ast_channel *nbs_request(const char *type, struct ast_format_cap *cap, const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor, const char *data, int *cause)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-        struct nbs_pvt *p;</span><br><span style="color: hsl(0, 100%, 40%);">-      struct ast_channel *tmp = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (ast_format_cap_iscompatible_format(cap, ast_format_slin) == AST_FORMAT_CMP_NOT_EQUAL) {</span><br><span style="color: hsl(0, 100%, 40%);">-             struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-             ast_log(LOG_NOTICE, "Asked to get a channel of unsupported format '%s'\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                    ast_format_cap_get_names(cap, &cap_buf));</span><br><span style="color: hsl(0, 100%, 40%);">-           return NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-       p = nbs_alloc(data);</span><br><span style="color: hsl(0, 100%, 40%);">-    if (p) {</span><br><span style="color: hsl(0, 100%, 40%);">-                tmp = nbs_new(p, AST_STATE_DOWN, assignedids, requestor);</span><br><span style="color: hsl(0, 100%, 40%);">-               if (!tmp)</span><br><span style="color: hsl(0, 100%, 40%);">-                       nbs_destroy(p);</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-       return tmp;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static int unload_module(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-     /* First, take us out of the channel loop */</span><br><span style="color: hsl(0, 100%, 40%);">-    ast_channel_unregister(&nbs_tech);</span><br><span style="color: hsl(0, 100%, 40%);">-  ao2_ref(nbs_tech.capabilities, -1);</span><br><span style="color: hsl(0, 100%, 40%);">-     nbs_tech.capabilities = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-   return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static int load_module(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- if (!(nbs_tech.capabilities = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT))) {</span><br><span style="color: hsl(0, 100%, 40%);">-             return AST_MODULE_LOAD_DECLINE;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-       ast_format_cap_append(nbs_tech.capabilities, ast_format_slin, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-       /* Make sure we can register our channel type */</span><br><span style="color: hsl(0, 100%, 40%);">-        if (ast_channel_register(&nbs_tech)) {</span><br><span style="color: hsl(0, 100%, 40%);">-              ast_log(LOG_ERROR, "Unable to register channel class %s\n", type);</span><br><span style="color: hsl(0, 100%, 40%);">-            ao2_ref(nbs_tech.capabilities, -1);</span><br><span style="color: hsl(0, 100%, 40%);">-             nbs_tech.capabilities = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-           return AST_MODULE_LOAD_DECLINE;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-       return AST_MODULE_LOAD_SUCCESS;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-AST_MODULE_INFO_STANDARD_DEPRECATED(ASTERISK_GPL_KEY, "Network Broadcast Sound Support");</span><br><span>diff --git a/configure b/configure</span><br><span>index c06dd7e..78ed454 100755</span><br><span>--- a/configure</span><br><span>+++ b/configure</span><br><span>@@ -1034,10 +1034,6 @@</span><br><span> NEON_DIR</span><br><span> NEON_INCLUDE</span><br><span> NEON_LIB</span><br><span style="color: hsl(0, 100%, 40%);">-PBX_NBS</span><br><span style="color: hsl(0, 100%, 40%);">-NBS_DIR</span><br><span style="color: hsl(0, 100%, 40%);">-NBS_INCLUDE</span><br><span style="color: hsl(0, 100%, 40%);">-NBS_LIB</span><br><span> PBX_MYSQLCLIENT</span><br><span> MYSQLCLIENT_DIR</span><br><span> MYSQLCLIENT_INCLUDE</span><br><span>@@ -1411,7 +1407,6 @@</span><br><span> with_lua</span><br><span> with_misdn</span><br><span> with_mysqlclient</span><br><span style="color: hsl(0, 100%, 40%);">-with_nbs</span><br><span> with_neon</span><br><span> with_neon29</span><br><span> with_netsnmp</span><br><span>@@ -2184,7 +2179,6 @@</span><br><span>   --with-lua=PATH         use Lua files in PATH</span><br><span>   --with-misdn=PATH       use mISDN user files in PATH</span><br><span>   --with-mysqlclient=PATH use MySQL client files in PATH</span><br><span style="color: hsl(0, 100%, 40%);">-  --with-nbs=PATH         use Network Broadcast Sound files in PATH</span><br><span>   --with-neon=PATH        use neon files in PATH</span><br><span>   --with-neon29=PATH      use neon29 files in PATH</span><br><span>   --with-netsnmp=PATH     use Net-SNMP files in PATH</span><br><span>@@ -10918,38 +10912,6 @@</span><br><span> </span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    NBS_DESCRIP="Network Broadcast Sound"</span><br><span style="color: hsl(0, 100%, 40%);">-    NBS_OPTION="nbs"</span><br><span style="color: hsl(0, 100%, 40%);">-    PBX_NBS=0</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-# Check whether --with-nbs was given.</span><br><span style="color: hsl(0, 100%, 40%);">-if test "${with_nbs+set}" = set; then :</span><br><span style="color: hsl(0, 100%, 40%);">-  withval=$with_nbs;</span><br><span style="color: hsl(0, 100%, 40%);">-       case ${withval} in</span><br><span style="color: hsl(0, 100%, 40%);">-      n|no)</span><br><span style="color: hsl(0, 100%, 40%);">-   USE_NBS=no</span><br><span style="color: hsl(0, 100%, 40%);">-      # -1 is a magic value used by menuselect to know that the package</span><br><span style="color: hsl(0, 100%, 40%);">-       # was disabled, other than 'not found'</span><br><span style="color: hsl(0, 100%, 40%);">-  PBX_NBS=-1</span><br><span style="color: hsl(0, 100%, 40%);">-      ;;</span><br><span style="color: hsl(0, 100%, 40%);">-      y|ye|yes)</span><br><span style="color: hsl(0, 100%, 40%);">-       ac_mandatory_list="${ac_mandatory_list} NBS"</span><br><span style="color: hsl(0, 100%, 40%);">-  ;;</span><br><span style="color: hsl(0, 100%, 40%);">-      *)</span><br><span style="color: hsl(0, 100%, 40%);">-      NBS_DIR="${withval}"</span><br><span style="color: hsl(0, 100%, 40%);">-  ac_mandatory_list="${ac_mandatory_list} NBS"</span><br><span style="color: hsl(0, 100%, 40%);">-  ;;</span><br><span style="color: hsl(0, 100%, 40%);">-      esac</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-fi</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>     NEON_DESCRIP="neon"</span><br><span>     NEON_OPTION="neon"</span><br><span>     PBX_NEON=0</span><br><span>@@ -22852,103 +22814,6 @@</span><br><span> fi</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-if test "x${PBX_NBS}" != "x1" -a "${USE_NBS}" != "no"; then</span><br><span style="color: hsl(0, 100%, 40%);">-   pbxlibdir=""</span><br><span style="color: hsl(0, 100%, 40%);">-   # if --with-NBS=DIR has been specified, use it.</span><br><span style="color: hsl(0, 100%, 40%);">-   if test "x${NBS_DIR}" != "x"; then</span><br><span style="color: hsl(0, 100%, 40%);">-      if test -d ${NBS_DIR}/lib; then</span><br><span style="color: hsl(0, 100%, 40%);">-         pbxlibdir="-L${NBS_DIR}/lib"</span><br><span style="color: hsl(0, 100%, 40%);">-      else</span><br><span style="color: hsl(0, 100%, 40%);">-         pbxlibdir="-L${NBS_DIR}"</span><br><span style="color: hsl(0, 100%, 40%);">-      fi</span><br><span style="color: hsl(0, 100%, 40%);">-   fi</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      ast_ext_lib_check_save_CFLAGS="${CFLAGS}"</span><br><span style="color: hsl(0, 100%, 40%);">-      CFLAGS="${CFLAGS} "</span><br><span style="color: hsl(0, 100%, 40%);">-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nbs_connect in -lnbs" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-$as_echo_n "checking for nbs_connect in -lnbs... " >&6; }</span><br><span style="color: hsl(0, 100%, 40%);">-if ${ac_cv_lib_nbs_nbs_connect+:} false; then :</span><br><span style="color: hsl(0, 100%, 40%);">-  $as_echo_n "(cached) " >&6</span><br><span style="color: hsl(0, 100%, 40%);">-else</span><br><span style="color: hsl(0, 100%, 40%);">-  ac_check_lib_save_LIBS=$LIBS</span><br><span style="color: hsl(0, 100%, 40%);">-LIBS="-lnbs ${pbxlibdir}  $LIBS"</span><br><span style="color: hsl(0, 100%, 40%);">-cat confdefs.h - <<_ACEOF >conftest.$ac_ext</span><br><span style="color: hsl(0, 100%, 40%);">-/* end confdefs.h.  */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* Override any GCC internal prototype to avoid an error.</span><br><span style="color: hsl(0, 100%, 40%);">-   Use char because int might match the return type of a GCC</span><br><span style="color: hsl(0, 100%, 40%);">-   builtin and then its argument prototype would still apply.  */</span><br><span style="color: hsl(0, 100%, 40%);">-#ifdef __cplusplus</span><br><span style="color: hsl(0, 100%, 40%);">-extern "C"</span><br><span style="color: hsl(0, 100%, 40%);">-#endif</span><br><span style="color: hsl(0, 100%, 40%);">-char nbs_connect ();</span><br><span style="color: hsl(0, 100%, 40%);">-int</span><br><span style="color: hsl(0, 100%, 40%);">-main ()</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-return nbs_connect ();</span><br><span style="color: hsl(0, 100%, 40%);">-  ;</span><br><span style="color: hsl(0, 100%, 40%);">-  return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-_ACEOF</span><br><span style="color: hsl(0, 100%, 40%);">-if ac_fn_c_try_link "$LINENO"; then :</span><br><span style="color: hsl(0, 100%, 40%);">-  ac_cv_lib_nbs_nbs_connect=yes</span><br><span style="color: hsl(0, 100%, 40%);">-else</span><br><span style="color: hsl(0, 100%, 40%);">-  ac_cv_lib_nbs_nbs_connect=no</span><br><span style="color: hsl(0, 100%, 40%);">-fi</span><br><span style="color: hsl(0, 100%, 40%);">-rm -f core conftest.err conftest.$ac_objext \</span><br><span style="color: hsl(0, 100%, 40%);">-    conftest$ac_exeext conftest.$ac_ext</span><br><span style="color: hsl(0, 100%, 40%);">-LIBS=$ac_check_lib_save_LIBS</span><br><span style="color: hsl(0, 100%, 40%);">-fi</span><br><span style="color: hsl(0, 100%, 40%);">-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nbs_nbs_connect" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-$as_echo "$ac_cv_lib_nbs_nbs_connect" >&6; }</span><br><span style="color: hsl(0, 100%, 40%);">-if test "x$ac_cv_lib_nbs_nbs_connect" = xyes; then :</span><br><span style="color: hsl(0, 100%, 40%);">-  AST_NBS_FOUND=yes</span><br><span style="color: hsl(0, 100%, 40%);">-else</span><br><span style="color: hsl(0, 100%, 40%);">-  AST_NBS_FOUND=no</span><br><span style="color: hsl(0, 100%, 40%);">-fi</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      CFLAGS="${ast_ext_lib_check_save_CFLAGS}"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   # now check for the header.</span><br><span style="color: hsl(0, 100%, 40%);">-   if test "${AST_NBS_FOUND}" = "yes"; then</span><br><span style="color: hsl(0, 100%, 40%);">-      NBS_LIB="${pbxlibdir} -lnbs "</span><br><span style="color: hsl(0, 100%, 40%);">-      # if --with-NBS=DIR has been specified, use it.</span><br><span style="color: hsl(0, 100%, 40%);">-      if test "x${NBS_DIR}" != "x"; then</span><br><span style="color: hsl(0, 100%, 40%);">-         NBS_INCLUDE="-I${NBS_DIR}/include"</span><br><span style="color: hsl(0, 100%, 40%);">-      fi</span><br><span style="color: hsl(0, 100%, 40%);">-      NBS_INCLUDE="${NBS_INCLUDE} "</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-         # check for the header</span><br><span style="color: hsl(0, 100%, 40%);">-         ast_ext_lib_check_saved_CPPFLAGS="${CPPFLAGS}"</span><br><span style="color: hsl(0, 100%, 40%);">-         CPPFLAGS="${CPPFLAGS} ${NBS_INCLUDE}"</span><br><span style="color: hsl(0, 100%, 40%);">-         ac_fn_c_check_header_mongrel "$LINENO" "nbs.h" "ac_cv_header_nbs_h" "$ac_includes_default"</span><br><span style="color: hsl(0, 100%, 40%);">-if test "x$ac_cv_header_nbs_h" = xyes; then :</span><br><span style="color: hsl(0, 100%, 40%);">-  NBS_HEADER_FOUND=1</span><br><span style="color: hsl(0, 100%, 40%);">-else</span><br><span style="color: hsl(0, 100%, 40%);">-  NBS_HEADER_FOUND=0</span><br><span style="color: hsl(0, 100%, 40%);">-fi</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-         CPPFLAGS="${ast_ext_lib_check_saved_CPPFLAGS}"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      if test "x${NBS_HEADER_FOUND}" = "x0" ; then</span><br><span style="color: hsl(0, 100%, 40%);">-         NBS_LIB=""</span><br><span style="color: hsl(0, 100%, 40%);">-         NBS_INCLUDE=""</span><br><span style="color: hsl(0, 100%, 40%);">-      else</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-         PBX_NBS=1</span><br><span style="color: hsl(0, 100%, 40%);">-         cat >>confdefs.h <<_ACEOF</span><br><span style="color: hsl(0, 100%, 40%);">-#define HAVE_NBS 1</span><br><span style="color: hsl(0, 100%, 40%);">-_ACEOF</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      fi</span><br><span style="color: hsl(0, 100%, 40%);">-   fi</span><br><span style="color: hsl(0, 100%, 40%);">-fi</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>            if test "x${PBX_NEON}" != "x1" -a "${USE_NEON}" != "no"; then</span><br><span>                PBX_NEON=0</span><br><span>           if test -n "$ac_tool_prefix"; then</span><br><span>diff --git a/configure.ac b/configure.ac</span><br><span>index 0a1370c..fa62e4a 100644</span><br><span>--- a/configure.ac</span><br><span>+++ b/configure.ac</span><br><span>@@ -514,7 +514,6 @@</span><br><span> AC_ARG_VAR([LUA_VERSIONS],[A space separated list of target lua versions to test.])</span><br><span> AST_EXT_LIB_SETUP([MISDN], [mISDN user], [misdn])</span><br><span> AST_EXT_LIB_SETUP([MYSQLCLIENT], [MySQL client], [mysqlclient])</span><br><span style="color: hsl(0, 100%, 40%);">-AST_EXT_LIB_SETUP([NBS], [Network Broadcast Sound], [nbs])</span><br><span> AST_EXT_LIB_SETUP([NEON], [neon], [neon])</span><br><span> AST_EXT_LIB_SETUP([NEON29], [neon29], [neon29])</span><br><span> AST_EXT_LIB_SETUP([NETSNMP], [Net-SNMP], [netsnmp])</span><br><span>@@ -2300,8 +2299,6 @@</span><br><span>    )</span><br><span> fi</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-AST_EXT_LIB_CHECK([NBS], [nbs], [nbs_connect], [nbs.h])</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> AST_EXT_TOOL_CHECK([NEON], [neon-config])</span><br><span> </span><br><span> AST_EXT_TOOL_CHECK([NEON29], [neon-config], , [--libs],</span><br><span>diff --git a/contrib/scripts/install_prereq b/contrib/scripts/install_prereq</span><br><span>index 98e9350..3d9cbcc 100755</span><br><span>--- a/contrib/scripts/install_prereq</span><br><span>+++ b/contrib/scripts/install_prereq</span><br><span>@@ -331,12 +331,6 @@</span><br><span> }</span><br><span> </span><br><span> install_unpackaged() {</span><br><span style="color: hsl(0, 100%, 40%);">-     echo "*** Installing NBS (Network Broadcast Sound) ***"</span><br><span style="color: hsl(0, 100%, 40%);">-       svn co https://svn.digium.com/svn/nbs/trunk nbs-trunk</span><br><span style="color: hsl(0, 100%, 40%);">-   cd nbs-trunk</span><br><span style="color: hsl(0, 100%, 40%);">-    make all install</span><br><span style="color: hsl(0, 100%, 40%);">-        cd ..</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>        # Only install libresample if it wasn't installed via package</span><br><span>    if ! test -f /usr/include/libresample.h; then</span><br><span>                echo "*** Installing libresample ***"</span><br><span>diff --git a/doc/UPGRADE-staging/chan_nbs_removal.txt b/doc/UPGRADE-staging/chan_nbs_removal.txt</span><br><span>new file mode 100644</span><br><span>index 0000000..46ae758</span><br><span>--- /dev/null</span><br><span>+++ b/doc/UPGRADE-staging/chan_nbs_removal.txt</span><br><span>@@ -0,0 +1,6 @@</span><br><span style="color: hsl(120, 100%, 40%);">+Subject: chan_nbs</span><br><span style="color: hsl(120, 100%, 40%);">+Master-Only: True</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+This module was deprecated in Asterisk 16</span><br><span style="color: hsl(120, 100%, 40%);">+and is now being removed in accordance with</span><br><span style="color: hsl(120, 100%, 40%);">+the Asterisk Module Deprecation policy.</span><br><span>diff --git a/include/asterisk/autoconfig.h.in b/include/asterisk/autoconfig.h.in</span><br><span>index c8225e2..d61c85c 100644</span><br><span>--- a/include/asterisk/autoconfig.h.in</span><br><span>+++ b/include/asterisk/autoconfig.h.in</span><br><span>@@ -543,9 +543,6 @@</span><br><span> /* Define to 1 if mysql/mysql.h has my_bool defined. */</span><br><span> #undef HAVE_MYSQLCLIENT_MY_BOOL</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Define to 1 if you have the Network Broadcast Sound library. */</span><br><span style="color: hsl(0, 100%, 40%);">-#undef HAVE_NBS</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> /* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */</span><br><span> #undef HAVE_NDIR_H</span><br><span> </span><br><span>diff --git a/makeopts.in b/makeopts.in</span><br><span>index 01c0da0..886a409 100644</span><br><span>--- a/makeopts.in</span><br><span>+++ b/makeopts.in</span><br><span>@@ -201,9 +201,6 @@</span><br><span> MYSQLCLIENT_INCLUDE=@MYSQLCLIENT_INCLUDE@</span><br><span> MYSQLCLIENT_LIB=@MYSQLCLIENT_LIB@</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-NBS_INCLUDE=@NBS_INCLUDE@</span><br><span style="color: hsl(0, 100%, 40%);">-NBS_LIB=@NBS_LIB@</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> NEON_INCLUDE=@NEON_INCLUDE@</span><br><span> NEON_LIB=@NEON_LIB@</span><br><span> NEON29_INCLUDE=@NEON_INCLUDE@</span><br><span></span><br></pre><div style="white-space:pre-wrap"></div><p>To view, visit <a href="https://gerrit.asterisk.org/c/asterisk/+/16320">change 16320</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/c/asterisk/+/16320"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ib5c7d43a780f2fb94cee90738e4c1af211ae4a33 </div>
<div style="display:none"> Gerrit-Change-Number: 16320 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: Joshua Colp <jcolp@sangoma.com> </div>
<div style="display:none"> Gerrit-Reviewer: Friendly Automation </div>
<div style="display:none"> Gerrit-Reviewer: George Joseph <gjoseph@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Joshua Colp <jcolp@sangoma.com> </div>
<div style="display:none"> Gerrit-Reviewer: Kevin Harwell <kharwell@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Sean Bright <sean@seanbright.com> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>