<p>N A has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.asterisk.org/c/asterisk/+/17642">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">chan_pjsip: Add ADSI support<br><br>Adds optional per-channel ADSI support to PJSIP.<br>ADSI remains disabled by default in PSJIP, so there<br>is no change in existing behavior.<br><br>ASTERISK-29789 #close<br><br>Change-Id: Id5a5a3e982d65a14ce55794d60a99f264492302f<br>---<br>M channels/chan_pjsip.c<br>M configs/samples/pjsip.conf.sample<br>A doc/CHANGES-staging/pjsip_adsi.txt<br>M include/asterisk/res_pjsip.h<br>M res/res_adsi.c<br>M res/res_pjsip.c<br>M res/res_pjsip/pjsip_configuration.c<br>7 files changed, 24 insertions(+), 5 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/42/17642/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c</span><br><span>index 3cbbc3b..2980fc2 100644</span><br><span>--- a/channels/chan_pjsip.c</span><br><span>+++ b/channels/chan_pjsip.c</span><br><span>@@ -630,7 +630,9 @@</span><br><span>           ast_channel_rings_set(chan, 1);</span><br><span>      }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   ast_channel_adsicpe_set(chan, AST_ADSI_UNAVAILABLE);</span><br><span style="color: hsl(120, 100%, 40%);">+  if (!session->endpoint->adsi) {</span><br><span style="color: hsl(120, 100%, 40%);">+         ast_channel_adsicpe_set(chan, AST_ADSI_UNAVAILABLE);</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span> </span><br><span>        ast_party_id_copy(&ast_channel_caller(chan)->id, &session->id);</span><br><span>        ast_party_id_copy(&ast_channel_caller(chan)->ani, &session->id);</span><br><span>diff --git a/configs/samples/pjsip.conf.sample b/configs/samples/pjsip.conf.sample</span><br><span>index 2d57208..76f6766 100644</span><br><span>--- a/configs/samples/pjsip.conf.sample</span><br><span>+++ b/configs/samples/pjsip.conf.sample</span><br><span>@@ -950,6 +950,7 @@</span><br><span>                            ; sending OPTIONS requests and examining the</span><br><span>                            ; responses.</span><br><span>                            ; (default: no)</span><br><span style="color: hsl(120, 100%, 40%);">+;adsi=no  ; Whether ADSI support is enabled. res_adsi is required. (default: "no")</span><br><span> </span><br><span> ;==========================AUTH SECTION OPTIONS=========================</span><br><span> ;[auth]</span><br><span>diff --git a/doc/CHANGES-staging/pjsip_adsi.txt b/doc/CHANGES-staging/pjsip_adsi.txt</span><br><span>new file mode 100644</span><br><span>index 0000000..f38a4fa</span><br><span>--- /dev/null</span><br><span>+++ b/doc/CHANGES-staging/pjsip_adsi.txt</span><br><span>@@ -0,0 +1,6 @@</span><br><span style="color: hsl(120, 100%, 40%);">+Subject: chan_pjsip</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ADSI support can now be optionally enabled by</span><br><span style="color: hsl(120, 100%, 40%);">+setting adsi=yes in an endpoint config. ADSI</span><br><span style="color: hsl(120, 100%, 40%);">+support remains disabled by default, so there</span><br><span style="color: hsl(120, 100%, 40%);">+is no change in existing behavior.</span><br><span>diff --git a/include/asterisk/res_pjsip.h b/include/asterisk/res_pjsip.h</span><br><span>index 9c1594d..d3b1c0b 100644</span><br><span>--- a/include/asterisk/res_pjsip.h</span><br><span>+++ b/include/asterisk/res_pjsip.h</span><br><span>@@ -948,6 +948,8 @@</span><br><span>     unsigned int stir_shaken;</span><br><span>    /*! Should we authenticate OPTIONS requests per RFC 3261? */</span><br><span>         unsigned int allow_unauthenticated_options;</span><br><span style="color: hsl(120, 100%, 40%);">+   /*! Whether ADSI is supported or not */</span><br><span style="color: hsl(120, 100%, 40%);">+       unsigned int adsi;</span><br><span> };</span><br><span> </span><br><span> /*! URI parameter for symmetric transport */</span><br><span>diff --git a/res/res_adsi.c b/res/res_adsi.c</span><br><span>index f8a2f56..9fb8aed 100644</span><br><span>--- a/res/res_adsi.c</span><br><span>+++ b/res/res_adsi.c</span><br><span>@@ -237,6 +237,7 @@</span><br><span>      if (ast_channel_adsicpe(chan) == AST_ADSI_UNAVAILABLE) {</span><br><span>             /* Don't bother if we know they don't support ADSI */</span><br><span>                errno = ENOSYS;</span><br><span style="color: hsl(120, 100%, 40%);">+               ast_verb(4, "ADSI not available for '%s'\n", ast_channel_name(chan));</span><br><span>              return -1;</span><br><span>   }</span><br><span> </span><br><span>@@ -255,7 +256,7 @@</span><br><span>                  for (;;) {</span><br><span>                           if (((res = ast_waitfor(chan, waittime)) < 1)) {</span><br><span>                                  /* Didn't get back DTMF A in time */</span><br><span style="color: hsl(0, 100%, 40%);">-                                        ast_debug(1, "No ADSI CPE detected (%d)\n", res);</span><br><span style="color: hsl(120, 100%, 40%);">+                                   ast_verb(4, "No ADSI CPE detected (%d)\n", res);</span><br><span>                                   if (!ast_channel_adsicpe(chan)) {</span><br><span>                                            ast_channel_adsicpe_set(chan, AST_ADSI_UNAVAILABLE);</span><br><span>                                         }</span><br><span>@@ -276,7 +277,7 @@</span><br><span>                                              break;</span><br><span>                                       } else {</span><br><span>                                             if (f->subclass.integer == 'D') {</span><br><span style="color: hsl(0, 100%, 40%);">-                                                    ast_debug(1, "Off-hook capable CPE only, not ADSI\n");</span><br><span style="color: hsl(120, 100%, 40%);">+                                                      ast_verb(4, "Off-hook capable CPE only, not ADSI\n");</span><br><span>                                              } else {</span><br><span>                                                     ast_log(LOG_WARNING, "Unknown ADSI response '%c'\n", f->subclass.integer);</span><br><span>                                              }</span><br><span>@@ -291,7 +292,7 @@</span><br><span>                              ast_frfree(f);</span><br><span>                       }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                   ast_debug(1, "ADSI Compatible CPE Detected\n");</span><br><span style="color: hsl(120, 100%, 40%);">+                     ast_verb(4, "ADSI Compatible CPE Detected\n");</span><br><span>             } else {</span><br><span>                     ast_debug(1, "Already in data mode\n");</span><br><span>            }</span><br><span>@@ -453,7 +454,7 @@</span><br><span>      }</span><br><span>    if (readformat) {</span><br><span>            ast_set_read_format(chan, readformat);</span><br><span style="color: hsl(0, 100%, 40%);">-  }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span> </span><br><span>        if (!res) {</span><br><span>          res = ast_safe_sleep(chan, 100 );</span><br><span>diff --git a/res/res_pjsip.c b/res/res_pjsip.c</span><br><span>index 697767d..321fe1a 100644</span><br><span>--- a/res/res_pjsip.c</span><br><span>+++ b/res/res_pjsip.c</span><br><span>@@ -1496,6 +1496,12 @@</span><br><span>                                          responses.</para></span><br><span>                                      </description></span><br><span>                                 </configOption></span><br><span style="color: hsl(120, 100%, 40%);">+                         <configOption name="adsi" default="no"></span><br><span style="color: hsl(120, 100%, 40%);">+                                     <synopsis>Whether ADSI support is enabled</synopsis></span><br><span style="color: hsl(120, 100%, 40%);">+                                      <description><para></span><br><span style="color: hsl(120, 100%, 40%);">+                                               This option can be set to allow ADSI to be used.</span><br><span style="color: hsl(120, 100%, 40%);">+                                      </para></description></span><br><span style="color: hsl(120, 100%, 40%);">+                             </configOption></span><br><span>                        </configObject></span><br><span>                        <configObject name="auth"></span><br><span>                           <synopsis>Authentication type</synopsis></span><br><span>diff --git a/res/res_pjsip/pjsip_configuration.c b/res/res_pjsip/pjsip_configuration.c</span><br><span>index f324bbb..b616f07 100644</span><br><span>--- a/res/res_pjsip/pjsip_configuration.c</span><br><span>+++ b/res/res_pjsip/pjsip_configuration.c</span><br><span>@@ -2193,6 +2193,7 @@</span><br><span>                codec_prefs_handler, outgoing_answer_codec_prefs_to_str, NULL, 0, 0);</span><br><span>        ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "stir_shaken", "off", stir_shaken_handler, stir_shaken_to_str, NULL, 0, 0);</span><br><span>  ast_sorcery_object_field_register(sip_sorcery, "endpoint", "allow_unauthenticated_options", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_endpoint, allow_unauthenticated_options));</span><br><span style="color: hsl(120, 100%, 40%);">+       ast_sorcery_object_field_register(sip_sorcery, "endpoint", "adsi", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_endpoint, adsi));</span><br><span> </span><br><span>    if (ast_sip_initialize_sorcery_transport()) {</span><br><span>                ast_log(LOG_ERROR, "Failed to register SIP transport support with sorcery\n");</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/c/asterisk/+/17642">change 17642</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/+/17642"/><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: Id5a5a3e982d65a14ce55794d60a99f264492302f </div>
<div style="display:none"> Gerrit-Change-Number: 17642 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: N A <mail@interlinked.x10host.com> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>