Skip to content
Snippets Groups Projects
  1. Dec 06, 2024
  2. Dec 05, 2024
    • Rob Swindell's avatar
      Add/use xp_lockfile() to support blocking file range/region lock acquisition · 03b84df8
      Rob Swindell authored
      Under heavy loads, I've found periodic non-blocking lock attempts just aren't
      reliable enough: in particular, on Vertrauen, the guest user account record
      in the user.tab file gets read and written-to A LOT (updating stats), and
      under heavy loads (especially with hundreds of web client sessions), I'd get
      timeouts attempting to lock the guest record in the user.tab (after about a
      minute of periodic retries) - so let's just block "forever" to get the user
      record lock (or until signaled or notified of a deadlock). With this change,
      I've not had any user.tab lock errors or apparent deadlocks.
      
      Let the underlying OS/filesystem handle queuing and deadlock detection,
      when supported. lock() still behaves as before: non-blocking lock attempt.
      03b84df8
    • Rob Swindell's avatar
      De-duplicate repeated errors logged via sbbs_t::errormsg() by reducing severity · 5f89c517
      Rob Swindell authored
      ... from ERROR to WARNING, so the repeats won't be logged to error.log file
      and won't (normally) be sent as notifications (e.g. emails) to the sysop. The
      duplicates are identified as from the same source file and line number as the
      immediately previous logged error within the last 12 hours. String comparison
      doesn't really work for deduplication since if you look closely, the errors
      usually are *not* exact duplicates (i.e. there's a node number or a socket
      descriptor or something that uniquely identifies the user/client/session).
      Repeated errors don't increment the node's error counter either.
      
      This does not de-duplicate errors logged via other means (e.g. direct calls to
      log()/lputs(),lprintf() with a severity of LOG_ERR or higher), but will
      solve the majority of duplicate errors that can be logged from the terminal
      server.
      
      So this at least partially addresses issue #619.
      5f89c517
  3. Dec 03, 2024
  4. Dec 02, 2024
  5. Dec 01, 2024
  6. Nov 30, 2024
    • Rob Swindell's avatar
      Implement max concurrent connections (per IP) limit in web server, default: 10 · cb28dafe
      Rob Swindell authored
      We have this feature for the FTP, Mail, and Terminal servers (with no default
      limit) but crazy abuse of my Synchronet web servers has now made this a
      necessity for Vertrauen. A limit of 2 used to be considered reasonable long
      ago. Today, 10 seems fair enough. Setting to 0 will impose no max-connections
      per IP address (other than the total client limit per server).
      cb28dafe
    • Rob Swindell's avatar
      Range check argc before deref of argv[1] · 52460c3a
      Rob Swindell authored
      Apparently JSVAL_IS_STRING() can return true even when argv[1] is out of range
      (I guess I assumed it'd alwasy be NULL or VOID/undefined) and this can lead to
      crash when calling JS_ValueToString() on it.
      52460c3a
  7. Nov 26, 2024
    • Rob Swindell's avatar
      Create/use SysopPageNotification text.dat string · 0dc160f0
      Rob Swindell authored
      to notify sysop (user #1) that they were paged. Previously, this was
      a hard-coded string. The new string in text.dat is the same, but adds
      2 BELs (CTRL-G chars) and is now customizable.
      
      Created an sbbs_t::notify() method to make this easier to use and that
      method supports @-code expansion, so this text.dat string supports @-codes
      (which I used).
      
      This addresses the feature request in issue #828 (beep the sysop in the
      telegram/short message, when they're paged).
      0dc160f0
  8. Nov 24, 2024
    • Deucе's avatar
      Some minor cleanups of echocfg · b1d22335
      Deucе authored
      1) Initialize saverobot.name since this is checked unconditionally.
         This has a side effect of initializing everything else, but name
         is the only thing that actually matters.
      2) Add a bar to the global settings menu.
         Previously, if you scrolled near the bottom and selected an option,
         after changing the option, you would jump up to the last item on
         the initial screen.
      3) Fix the AreaMgr Support default value to be the current, not the
         opposite of current.
      4) Use the correct variable for EchoMail Relay Filtered Messages
         setting default.
      b1d22335
    • Deucе's avatar
      Remove ssh_errors variable. · 26886a8c
      Deucе authored
      We're carefully counting the errors, but never looking at the count.
      26886a8c
    • Rob Swindell's avatar
      Fix potential deadlock in getnodedat(), observed on macOS · 15e40a45
      Rob Swindell authored
      Upon any node.dab lock or read failure, this code would cause errormsg() which
      would often/usually end up claling getnodedat() which would block forever trying
      to acquire the ndoefile_mutex (introduced in commit b9633069, I'm not clear why).
      
      Unlock/release the mutex *before* calling errormsg().
      15e40a45
  9. Nov 23, 2024
Loading