<p></p>
<h3 dir="auto">Description</h3>
<p dir="auto">If the file loaded with the modparam "load" uses CommonJS modules (Issue <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1148009045" data-permission-text="Title is private" data-url="https://github.com/kamailio/kamailio/issues/3037" data-hovercard-type="issue" data-hovercard-url="/kamailio/kamailio/issues/3037/hovercard" href="https://github.com/kamailio/kamailio/issues/3037">#3037</a>-PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1148045545" data-permission-text="Title is private" data-url="https://github.com/kamailio/kamailio/issues/3038" data-hovercard-type="pull_request" data-hovercard-url="/kamailio/kamailio/pull/3038/hovercard" href="https://github.com/kamailio/kamailio/pull/3038">#3038</a>), the modules are not reloaded when issuing the command app_jsdt.reload. Only the "main" file is reloaded.</p>
<h4 dir="auto">Reproduction</h4>
<p dir="auto">1 - Start Kamailio with those files as the initial configuration</p>
<pre lang="generic" class="notranslate"><code class="notranslate"># kamailio.cfg
## Only the part concerning app_jsdt is included. 
## The rest of the config file is ommited for the sake of clarity

loadmodule "app_jsdt.so"
modparam("app_jsdt", "load", "/etc/kamailio/js/index.js")
modparam("app_jsdt", "mode", 1)
cfgengine "jsdt"
</code></pre>
<div class="highlight highlight-source-js"><pre><span class="pl-c">// index.js</span>
<span class="pl-k">var</span> <span class="pl-s1">myModule</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'./myModule'</span><span class="pl-kos">)</span><span class="pl-kos">;</span>

<span class="pl-k">function</span> <span class="pl-en">ksr_request_route</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-s1">myModule</span><span class="pl-kos">.</span><span class="pl-en">myFunction</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
    <span class="pl-c1">KSR</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span><span class="pl-s">"info"</span><span class="pl-kos">,</span> <span class="pl-s">"KSR.log called from the index.js file"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span></pre></div>
<div class="highlight highlight-source-js"><pre><span class="pl-c">// myModule.js</span>
<span class="pl-s1">exports</span><span class="pl-kos">.</span><span class="pl-en">myFunction</span> <span class="pl-c1">=</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-c1">KSR</span><span class="pl-kos">.</span><span class="pl-c1">log</span><span class="pl-kos">(</span><span class="pl-s">"info"</span><span class="pl-kos">,</span> <span class="pl-s">"KSR.log called from the myModule.js file"</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto">2 - Modify the myModule.js file</p>
<div class="highlight highlight-source-js"><pre><span class="pl-c">// myModule.js</span>
<span class="pl-s1">exports</span><span class="pl-kos">.</span><span class="pl-en">myFunction</span> <span class="pl-c1">=</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-c1">KSR</span><span class="pl-kos">.</span><span class="pl-c1">log</span><span class="pl-kos">(</span><span class="pl-s">"info"</span><span class="pl-kos">,</span> <span class="pl-s">"KSR.log called from the MODIFIED myModule.js file"</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto">3 - Run the reload command</p>
<div class="highlight highlight-text-shell-session"><pre><span class="pl-e">foo@bar:~</span># <span class="pl-s1">kamcmd app_jsdt.reload</span>
<span class="pl-c1">{</span>
<span class="pl-c1">        old: 0</span>
<span class="pl-c1">        new: 1</span>
<span class="pl-c1">}</span></pre></div>
<blockquote>
<p dir="auto">Log file</p>
<p dir="auto">INFO: app_jsdt [app_jsdt_api.c:1557]: app_jsdt_rpc_reload(): marking for reload js script file: /etc/kamailio/js/index.js (0 => 0)<br>
DEBUG: app_jsdt [app_jsdt_api.c:534]: jsdt_kemi_reload_script(): reloading js script file: /etc/kamailio/js/index.js (0 => 1)</p>
</blockquote>
<p dir="auto">4 - The log file still show those lines:</p>
<blockquote>
<p dir="auto">Log file</p>
<p dir="auto">INFO     [core/kemi.c:156]: sr_kemi_core_log(): KSR.log called from the myModule.js file<br>
INFO     [core/kemi.c:156]: sr_kemi_core_log(): KSR.log called from the index.js file</p>
</blockquote>
<p dir="auto">5 - Modify the index.js file</p>
<div class="highlight highlight-source-js"><pre><span class="pl-c">// index.js</span>
<span class="pl-k">var</span> <span class="pl-s1">myModule</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'./myModule'</span><span class="pl-kos">)</span><span class="pl-kos">;</span>

<span class="pl-k">function</span> <span class="pl-en">ksr_request_route</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-s1">myModule</span><span class="pl-kos">.</span><span class="pl-en">myFunction</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
    <span class="pl-c1">KSR</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span><span class="pl-s">"info"</span><span class="pl-kos">,</span> <span class="pl-s">"KSR.log called from the MODIFIED index.js file"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto">6 - Run the reload command</p>
<div class="highlight highlight-text-shell-session"><pre><span class="pl-e">foo@bar:~</span># <span class="pl-s1">kamcmd app_jsdt.reload</span>
<span class="pl-c1">{</span>
<span class="pl-c1">        old: 1</span>
<span class="pl-c1">        new: 2</span>
<span class="pl-c1">}</span></pre></div>
<blockquote>
<p dir="auto">Log file</p>
<p dir="auto">INFO: app_jsdt [app_jsdt_api.c:1557]: app_jsdt_rpc_reload(): marking for reload js script file: /etc/kamailio/js/index.js (0 => 1)<br>
DEBUG: app_jsdt [app_jsdt_api.c:534]: jsdt_kemi_reload_script(): reloading js script file: /etc/kamailio/js/index.js (1 => 2)</p>
</blockquote>
<p dir="auto">7 - The log file now show those lines:</p>
<blockquote>
<p dir="auto">Log file</p>
<p dir="auto">INFO     [core/kemi.c:156]: sr_kemi_core_log(): KSR.log called from the myModule.js file<br>
INFO     [core/kemi.c:156]: sr_kemi_core_log(): KSR.log called from the MODIFIED index.js file</p>
</blockquote>
<p dir="auto">8 - Restart kamailio completly</p>
<p dir="auto">9 - The log file now show those lines:</p>
<blockquote>
<p dir="auto">Log file</p>
<p dir="auto">INFO     [core/kemi.c:156]: sr_kemi_core_log(): KSR.log called from the MODIFIED myModule.js file<br>
INFO     [core/kemi.c:156]: sr_kemi_core_log(): KSR.log called from the MODIFIED index.js file</p>
</blockquote>
<h3 dir="auto">Possible Solutions</h3>
<p dir="auto">Sorry, I would really like to provide one, but, as I'm a new Kamailio user, I don't know all the internals yet.</p>
<h3 dir="auto">Additional Information</h3>
<ul dir="auto">
<li><strong>Kamailio Version</strong></li>
</ul>
<div class="highlight highlight-text-shell-session"><pre><span class="pl-e">foo@bar:~</span># <span class="pl-s1">kamailio -v</span>
<span class="pl-c1">version: kamailio 5.6.0 (x86_64/linux)</span>
<span class="pl-c1">flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLOCKLIST, HAVE_RESOLV_RES, TLS_PTHREAD_MUTEX_SHARED</span>
<span class="pl-c1">ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB</span>
<span class="pl-c1">poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.</span>
<span class="pl-c1">id: unknown</span>
<span class="pl-c1">compiled with gcc 10.2.1</span></pre></div>
<ul dir="auto">
<li><strong>Operating System</strong>:</li>
</ul>
<div class="highlight highlight-text-shell-session"><pre><span class="pl-e">foo@bar:~</span># <span class="pl-s1">lsb_release -a</span>
<span class="pl-c1">No LSB modules are available.</span>
<span class="pl-c1">Distributor ID: Debian</span>
<span class="pl-c1">Description:    Debian GNU/Linux 11 (bullseye)</span>
<span class="pl-c1">Release:        11</span>
<span class="pl-c1">Codename:       bullseye</span>
<span class="pl-e">foo@bar:~</span># <span class="pl-s1">uname -a</span>
<span class="pl-c1">Linux localhost 5.10.0-14-amd64 #1 SMP Debian 5.10.113-1 (2022-04-29) x86_64 GNU/Linux</span></pre></div>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />Reply to this email directly, <a href="https://github.com/kamailio/kamailio/issues/3145">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABO7UZKJO6SPBPVO4CXNSELVPCZOZANCNFSM5YYL4JPQ">unsubscribe</a>.<br />You are receiving this because you are subscribed to this thread.<img src="https://github.com/notifications/beacon/ABO7UZOOBGR5GLS35O73TJDVPCZOZA5CNFSM5YYL4JP2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4S6DDZUQ.gif" height="1" width="1" alt="" /><span style="color: transparent; font-size: 0; display: none; visibility: hidden; overflow: hidden; opacity: 0; width: 0; height: 0; max-width: 0; max-height: 0; mso-hide: all">Message ID: <span><kamailio/kamailio/issues/3145</span><span>@</span><span>github</span><span>.</span><span>com></span></span></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/kamailio/kamailio/issues/3145",
"url": "https://github.com/kamailio/kamailio/issues/3145",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>