1. 31 Mar, 2021 2 commits
    • Deucе's avatar
      Fix error in last commit. · 8f0ae86b
      Deucе authored
      Looks like I was partially restoring old code before I stopped.
    • Deucе's avatar
      Use new PREFER_POLL define to control poll() usage · 3de05e2d
      Deucе authored
      Rather than depending on _WIN32 which is silly, make it clear what
      exactly is being done and why.
      Note that the spy socket stuff and some external stuff on *nix have
      had the select() implementation removed.  To support using select()
      on !Win32 will require de-refactoring that's not really worth doing.
      Instead, just use #error and reference the commit where the old
      code can be found.
  2. 30 Mar, 2021 1 commit
    • Deucе's avatar
      Initial poll() work · af30c430
      Deucе authored
      Still needs updates in services_thread(), CGI stuff in websrvr.c,
      and sbbs_t::external()
  3. 17 Mar, 2021 1 commit
  4. 16 Mar, 2021 1 commit
  5. 15 Mar, 2021 3 commits
  6. 06 Mar, 2021 2 commits
    • Rob Swindell's avatar
      Allow fine-grained control over JavaScript compiler options via *.ini · 2c7f3bc6
      Rob Swindell authored
      JavaScriptOptions bit-field can be set in sbbs.ini and jsexec.ini to over-ride the default JS compiler options which have been changed from 0 to (options previously only used by JSDoor):
      * JIT - TraceMonkey
      * METHODJIT - JägerMonkey
      * COMPILE_N_GO - compile-time scope chain resolution of consts
      * PROFILING - Choose between TraceMonkey and JägerMonkey at compile-time based on profiling results
      Other options available but not enabled by default:
      * STRICT - warn on debious practice (i.e. similar to "use strict")
      * WERROR - convert warnings to errors
      * VAROBJFIX -  use last object on scope chain as the ECMA 'variables object'
      * RELIMIT - Throw exception on any regular expression which backtracks more than n^3 times, where n is length of the input string
      * ANONFUNFIX - Disallow function () {} in statement context per ECMA-262 Edition 3.
      * METHODJIT_ALWAYS - Always whole-method JIT, don't tune at run-time.
      - Fixed JS warning string formatting (missing space separator).
      - Removed an extraneous new-line in lprintf() call in mailsrvr.
      - Added basic assertEq() global method to jsexec, required when running SpiderMonkey test scripts.
    • Rob Swindell's avatar
      Don't leave the logged event code as "DAILY" after daily events run · f4d33f43
      Rob Swindell authored
      I noticed "DAILY ... Semaphore signaled" in the event thread log output. Now fixed.
  7. 22 Feb, 2021 3 commits
  8. 18 Feb, 2021 4 commits
  9. 16 Feb, 2021 2 commits
  10. 15 Feb, 2021 4 commits
  11. 14 Feb, 2021 1 commit
  12. 18 Jan, 2021 1 commit
    • Rob Swindell's avatar
      Safe string handling with config-load error messages · 99dbeb14
      Rob Swindell authored
      We were just trusting that the error strings would be shorter than 256 (usually), but since we're including paths and strerror() results, we really have no control over the length of the error strings. So enforce some healthy boundaries. This could explain the crashes that Divarin of Mutiny is seeing with SCFG on WinXP or maybe it was the truncsp(strerror()) stuff that was just removed as well. We'll see...
  13. 20 Dec, 2020 1 commit
  14. 13 Dec, 2020 4 commits
  15. 07 Dec, 2020 1 commit
  16. 29 Nov, 2020 4 commits
    • Rob Swindell's avatar
    • Rob Swindell's avatar
      Fallback to the "first node" configuration · 07bd3442
      Rob Swindell authored
      If a node's configuration can't be loaded (e.g. nodeX/node.cnf is missing), fall-back and load the "first node" (e.g. Node1) configuration. On recent *nix installs (since the migration to Git), the node2+/node.cnf files were not copied/created, so let's solve that soon-to-be-FAQ now.
    • Rob Swindell's avatar
      Copy event last-run info from global config into node config · 827063bb
      Rob Swindell authored
      Fixes issue introduced in last commit to this file (the each-node-has-its-own-config-in-memory enhancement) that would prevent users from logging in because their time was reduced for an upcoming event that had already run. The change assumes the event thread is running (its the thing that reads the event last-run info from time.dab). Thanks to mlong for the report.
    • Rob Swindell's avatar
      Load/keep/refresh each node's configuration in memory. · 82d3ae6e
      Rob Swindell authored
      Previously, all nodes shared the same copy of the configuration in memory. This prevented any node from seeing an updated configuration until all nodes were offline or waiting for connection and could be recycled. Now, no recycling of the server is needed for a node to load a new config. A node in-use *still* cannot reload configuration until the user disconnects, but all you have to do is logon to another unused node and you (or that user) will get an updated configuration. Bots or server recycling problems will no longer prevent the sysop or user from getting a current configuration when connecting to any node.
      This is one of those instances of giving the sysop what he wants rather than what he asked for. I should've done this a long time ago, but the idea just occurred to me. You're welcome. :-)
  17. 24 Nov, 2020 1 commit
    • Rob Swindell's avatar
      Stop pretending to configure the JavaScript Context stack · c0cd8686
      Rob Swindell authored
      The argument to JS_NewContext that we were allowing to be configured was not the contest stack size, but rather:
      "The size, in bytes, of each "stack chunk". This is a memory management tuning parameter which most users should not adjust. 8192 is a good default value." - per Mozilla.
      So we're just going to use the suggested default, hard-coded.
  18. 20 Nov, 2020 1 commit
  19. 19 Nov, 2020 1 commit
  20. 18 Nov, 2020 2 commits
    • Stephen Hurd's avatar
      Allow more than 256 pre-defined properties in a built-in JS object. · c779ea21
      Stephen Hurd authored
      Previously, properties were only supported via the TinyID mechanism
      in the JS API.  This limited the properties to have a unique signed
      8-bit integer ID, which prevented more than 256 properties from
      existing in a built-in object.
      The id value can be a name however, a TinyID is not required.  For
      property descriptions with an ID outside the range of 8 bits, define
      them using just the name.  When this is done, the getter and setter
      functions will need to convert the names to an ID themself.
      This isn't ideal... ideally, each would have a unique getter and
      setter, but doing it this way puts of requiring an internal JS API
      refactor and allows the CryptCert class to have all the defined
      As implied... CryptCert now supports all properties, and JS Docs
      will be created for them.  This section is yuge!
    • Deon George's avatar