<h2><aname=sbbsctrl>Synchronet Control Panel (Win32 GUI) Specific Changes</a></h2>
<h2><aname=servers>All Servers</a></h2>
<ul>
<li>Silently-filtered IP address (using ip-silent.can) are truely silent now
(no sounds or log entries)
<li>New SemFileCheckFrequency value in .ini file (both global and per-server) (previously hard-coded to 2 seconds in most cases), defaults to 5 seconds
</ul>
<h2><aname=telnet>Telnet/RLogin Server</a></h2>
<h2><aname=ftpsrvr>FTP Server</a></h2>
<ul>
<li>Bugfix: in send_thread() that could send partial files if the last block was
retried because of a EWOULDBLOCK error (new bug due to non-blocking socket use)
<li>Bugfix: No longer stops send_thread when send() reports a short packet
(still logs a error/warning message)
<li>Only reports data send error if send returns <1.
<li>Now using thread-safe build of Mozilla JavaScript Engine for improved reliability when multiple simultaneous JavaScripts modules are being executed
<li>Upgraded JavaScript engine to JavaScript-C (SpiderMonkey) 1.5 RC 5a for improved relability
<li>Static global objects are now created as read-only: prevents inadvertent
reasignment by script author accidentally using object name as local variable
<li>Fixed (finally) JavaScript object initialization segfaults when the JS runtime
"max_bytes" value is insufficient for the number of configured items:
by defining dynamically created objects and arrays as properties of child
objects of the global object immediately after such objects are created,
they are "implicitly rooted", protecting them from (unexpected) garbage
collection. Now the initialization will simply fail with a nice "out of memory"
error. This was a long-standing bug that rarely occurred in the wild
<li>JavaScript context stack size is now configurable
</ul>
<h2><aname=jsexec>JSexec</a></h2>
<ul>
<li>This is a new program used to execute JavaScript modules in a separate process outside of Synchronet
<br>(run <tt>jsexec -?</tt> for usage syntax)
<li>Can be used to execute JavaScript timed events (e.g. newslink.js) in the background (asynchronous to other timed events)
<li>Can be used to execute JavaScript modules (e.g. nodelist_html.js) as web server CGI scripts (using a 3rd party web server)
<li>Can be used to execute some static Synchronet services (e.g. ircd.js) externally from Synchronet