<p> Attention is currently required from: Kevin Harwell, Richard Mudgett. </p>
<p><a href="https://gerrit.asterisk.org/c/asterisk/+/18413">View Change</a></p><p>5 comments:</p><ul style="list-style: none; padding: 0;"><li style="margin: 0; padding: 0;"><p><a href="null">File channels/chan_pjsip.c:</a></p><ul style="list-style: none; padding: 0;"><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.asterisk.org/c/asterisk/+/18413/comment/7f2c481e_f1baff4c">Patch Set #6, Line 575:</a> <code style="font-family:monospace,monospace">     ast_channel_snapshot_invalidate_segment(chan, AST_CHANNEL_SNAPSHOT_INVALIDATE_BASE);</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">I wonder if this should moved into the ast_channel_tech_pvt_set call itself. […]</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">I first put "ast_channel_snapshot_invalidate_segment" at the bottom of "begin_dial_prerun" (in dial.c) so that all channel drivers would benefit from the change. But that would only work for outgoing calls, not for incoming calls.</p><p style="white-space: pre-wrap; word-wrap: break-word;">Also found it tempting to put it in ast_channel_tech_pvt_set, but didn't know if it was a good idea. After a quick look through the code I would say it wouldn't hurt... But I would only want to invalidate the BASE segment if the value is not reset (set to NULL) so that pvt_id isn't missing in Channel down/hangup events as ast_channel_tech_pvt_set is already being resetted by that time.</p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">```<br>void ast_channel_tech_pvt_set(struct ast_channel *chan, void *value)<br>{<br>       chan->tech_pvt = value;<br>    if (value != NULL) {<br>          ast_channel_snapshot_invalidate_segment(chan, AST_CHANNEL_SNAPSHOT_INVALIDATE_BASE);<br>  }<br>}<br>```</pre><p style="white-space: pre-wrap; word-wrap: break-word;">On the other hand: chan_sip and chan_pjsip are the only channel drivers which are specifying a "get_pvt_uniqueid" function and would need the invalidation.</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.asterisk.org/c/asterisk/+/18413/comment/961f0bf9_1bd5fdfc">Patch Set #6, Line 1277:</a> <code style="font-family:monospace,monospace"> if (!channel || !uniqueid) {</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">Is it possible for channel to be NULL here?</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Yes, chan_pjsip_new is calling ast_channel_alloc_with_endpoint which is calling channel_snapshot_base_create where I need to access ->get_pvt_uniqueid(chan).</p><p style="white-space: pre-wrap; word-wrap: break-word;">But ast_channel_tech_pvt_set is only called *after* ast_channel_alloc_with_endpoint.</p><p style="white-space: pre-wrap; word-wrap: break-word;">chan_sip's unique id function basically does the same check.</p></li></ul></li><li style="margin: 0; padding: 0;"><p><a href="null">File include/asterisk/stasis_channels.h:</a></p><ul style="list-style: none; padding: 0;"><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.asterisk.org/c/asterisk/+/18413/comment/e6d33224_ab04023e">Patch Set #6, Line 108:</a> <code style="font-family:monospace,monospace">             AST_STRING_FIELD(pvt_uniqueid);  /*!< Channel drivers unique id */</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">Extended string fields are only necessary on released branches to avoid ABI breakage.</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Right.</p><p style="white-space: pre-wrap; word-wrap: break-word;">It looks like I'm the first one using AST_STRING_FIELD_EXTENDED now :)</p></li></ul></li><li style="margin: 0; padding: 0;"><p><a href="null">File main/stasis_channels.c:</a></p><ul style="list-style: none; padding: 0;"><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.asterisk.org/c/asterisk/+/18413/comment/34f1505f_2c2a6ff2">Patch Set #6, Line 287:</a> <code style="font-family:monospace,monospace">             ast_string_field_set(snapshot, pvt_uniqueid, ast_strdupa(ast_channel_tech(chan)->get_pvt_uniqueid(chan)));</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">When you use the extended declaration you'll also need to initialize this a bit differently. […]</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Ack</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.asterisk.org/c/asterisk/+/18413/comment/283c6406_ed4e0fdb">Patch Set #6, Line 289:</a> <code style="font-family:monospace,monospace">               ast_string_field_set(snapshot, pvt_uniqueid, ast_channel_uniqueid(chan));</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">I'm torn having it default to the channel's 'uniqueid'. […]</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Yes, changing it to empty.</p></li></ul></li></ul><p>To view, visit <a href="https://gerrit.asterisk.org/c/asterisk/+/18413">change 18413</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/+/18413"/><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: I7cc6e7a9d29efe74bc27811d788dac20fe559b87 </div>
<div style="display:none"> Gerrit-Change-Number: 18413 </div>
<div style="display:none"> Gerrit-PatchSet: 6 </div>
<div style="display:none"> Gerrit-Owner: Moritz Fain <moritz@fain.io> </div>
<div style="display:none"> Gerrit-Reviewer: Friendly Automation </div>
<div style="display:none"> Gerrit-Reviewer: Kevin Harwell <kharwell@digium.com> </div>
<div style="display:none"> Gerrit-CC: Richard Mudgett <rmudgett@digium.com> </div>
<div style="display:none"> Gerrit-Attention: Kevin Harwell <kharwell@digium.com> </div>
<div style="display:none"> Gerrit-Attention: Richard Mudgett <rmudgett@digium.com> </div>
<div style="display:none"> Gerrit-Comment-Date: Wed, 27 Apr 2022 11:56:22 +0000 </div>
<div style="display:none"> Gerrit-HasComments: Yes </div>
<div style="display:none"> Gerrit-Has-Labels: No </div>
<div style="display:none"> Comment-In-Reply-To: Kevin Harwell <kharwell@digium.com> </div>
<div style="display:none"> Comment-In-Reply-To: Richard Mudgett <rmudgett@digium.com> </div>
<div style="display:none"> Gerrit-MessageType: comment </div>