Skip to content
Snippets Groups Projects
  1. Dec 12, 2020
  2. Dec 06, 2020
    • Rob Swindell's avatar
      Fix null pointer deref (crash) in new_user() when "client" object is invalid · e67fe56e
      Rob Swindell authored
      When system.new_user() was called but the current "client" object is uninitialized (e.g. has NULL protocol, host or IP address fields because there is no active client, e.g. because is was called from a timed event with active user online) - this code would dereference a NULL pointer and crash the b0rad. Reported by Mortifis.
      e67fe56e
  3. Dec 02, 2020
  4. Sep 19, 2020
  5. Sep 17, 2020
    • Rob Swindell's avatar
      Better sysop availability (for chat) visibility/toggleability · 6b993a0b
      Rob Swindell authored
      - JS system.operator_available property (read/writeable)
      - SYSAVAIL @-code which expands to LiSysopAvailable or LiSysopNotAvailable
        (use the new SYSAVAIL @-code in the chat menu to show availabilty to chat)
      - ;avail sysop command (in str_cmds.js) to toggle sysop availability
      - Changed LiSysopIs text.dat string to be a format string (include %s) and
        the trailing \r\n, so that it can be used in str_cmds.js or anywhere else
        to report sysop availability to chat, or can be set to blank string to
        display nothing (this would not work previously).
      6b993a0b
  6. Sep 14, 2020
  7. Aug 16, 2020
  8. Mar 31, 2020
    • rswindell's avatar
      Add 2 new system properties: · d3623484
      rswindell authored
      - min_password_length (currently hard-coded to 4)
      - max_password_length (currently hard-coded to 40)
      
      Remove 2 unused system properties (nobody uses PostLink/UTI drivers any more):
      - psname
      - psnum
      d3623484
  9. Mar 29, 2020
    • rswindell's avatar
      Add system.get_node() method to read a single node record in one shot: · 46844bb7
      rswindell authored
      use this in place of system.node_list[] if you're going to be using a lot of
      the properties and passing them around to methods which are going to each
      possibly dereference the values, as *each* deference results in a read of the
      node record in the node.dab. On my system, a simple node list (e.g. /L
      command) would result in between 60 and 100 reads of the node.dab (for a 13
      node system), which was nuts.
      
      The system.get_node() method currently leaves the node record unlocked and
      there is currently no equivalent put_node() method, so you still need to use
      the system.node_list[] for modification of node records. But, I now see there
      are race conditions with the current methods of read-modify-writes of the
      node_list[] properties. We should be locking a node.dab record, reading it,
      modifying it, writing it, and then unlocking it - as is done in the C/C++
      code. So... that's a todo item.
      
      Also created system.stats.node_gets to track the number of node.dab reads
      from a single instance of the system object. May remove this any time.
      46844bb7
  10. Mar 24, 2020
  11. Sep 02, 2019
    • rswindell's avatar
      Storing the node file (node.dab) descriptor in the scfg_t was a "bad idea" {tm} · e97522ee
      rswindell authored
      The scfg_t instances are often shared between threads and we can't really share
      file descriptors between threads, so we ended up with file descriptor leaks and
      race conditions.
      
      Instead, define/allocate/free a new js_system_private_t where the scfg_t* and
      the nodefile (descriptor) are kept - per "system" instance.
      e97522ee
  12. Aug 31, 2019
  13. Aug 20, 2019
  14. May 04, 2019
    • rswindell's avatar
    • rswindell's avatar
      Define and use a wrapper for JS_GetInstancePrivate(): js_GetClassPrivate() · 6f83c4ff
      rswindell authored
      Use this in place of JS_GetPrivate() in native class methods that need the
      class instance's private data pointer and will do bad things if that pointer
      points to something other than what is expected. mcmlxxix (matt) discovered
      that using Object.apply(), you can invoke class methods where the 'this'
      instance is a different class. This would result in
      "Internal Error: No Private Data." or a crash.
      So now, gracefully detect this condition and report a meaningful error:
      "'<class-name>' instance: No Private Data or Class Mismatch"
      
      Also, important to note: if the method uses JS_THIS_OBJECT to get the JSObject*
      to pass to JS_Get*Private, then it must do this *before* it calls JS_SET_RVAL.
      
      From jsapi.h:
       * NB: there is an anti-dependency between JS_CALLEE and JS_SET_RVAL: native
       * methods that may inspect their callee must defer setting their return value
       * until after any such possible inspection. Otherwise the return value will be
       * inspected instead of the callee function object.
      
      The js_crypt*.c files still need this treatment.
      6f83c4ff
  15. Mar 10, 2018
  16. Feb 20, 2018
  17. Nov 16, 2017
  18. Nov 13, 2017
    • rswindell's avatar
      New feature: control of SPAM visibility when reading mail on the Terminal · d18bd3bd
      rswindell authored
      Server via the new 'V' command from the Reading Mail prompt allows you to
      toggle between all mail (including SPAM, the default), SPAM only, or HAM only.
      Also added a new '/' (search text) command from the reading mail prompts.
      Mail imported before the mailsrvr added support (recently) for the MSG_SPAM
      attribute flag will not be counted/filtered as SPAM.
      SBBSecho will have a commit (next) to support the new loadmail() usage, it
      will not compile until then.
      d18bd3bd
  19. Oct 23, 2017
  20. Dec 02, 2016
  21. Nov 10, 2015
  22. Aug 25, 2015
  23. Aug 22, 2015
  24. Aug 20, 2015
    • deuce's avatar
      Update to 3.17a · dbbfabf1
      deuce authored
      New Features:
      - Multiple bindings for each service
        Use comma-separated interfaces on Interface= lines in the ini file.
        Default is now "0.0.0.0,::"
      - IPv6 support
      - TLS support for the webserver and (non-static) services
        New TLS option in services.ini (ie: Options=TLS)
      - Decrease LEN_SCAN_CMD to 35 chars, increase the CID field to 45 chars,
        and rename the MAIL_CMD string to IPADDR.  I think this frees up the
        note field for SysOp use.
      dbbfabf1
  25. Jul 29, 2015
  26. Aug 19, 2014
  27. Apr 06, 2014
  28. Sep 30, 2013
  29. May 10, 2013
  30. Apr 27, 2013
  31. Feb 08, 2013
  32. Jun 15, 2012
  33. Jun 01, 2012
Loading