Skip to content
Snippets Groups Projects
  1. Sep 14, 2024
    • Rob Swindell's avatar
      fileidexrec_t doesn't need to contain union · 62b0507b
      Rob Swindell authored
      This served exactly no purpose (since the idxrec_t existed at the same
      offset in both parts of the union). So this was just some weird artifact
      from the new filebase development.
      62b0507b
    • Rob Swindell's avatar
      Eliminte weird gcc (12.2) warning in release build (only) · 10562789
      Rob Swindell authored
      Increasing size of mode[] element by 2 bytes eliminated these GCC warnings
      that seem like false-positives to me:
      
      sbbs.h:194:48: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
        194 |                                 (ret)[JSSTSpos]=(char)JSSTSstrval[JSSTSpos]; \
            |                                 ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      js_file.c:225:25: note: in expansion of macro ‘JSSTRING_TO_STRBUF’
        225 |                         JSSTRING_TO_STRBUF(cx, str, p->mode, sizeof(p->mode), NULL);
            |                         ^~~~~~~~~~~~~~~~~~
      js_file.c:42:17: note: at offset 5 into destination object ‘mode’ of size 5
         42 |         char    mode[5];
            |                 ^~~~
      
      Similar use of JSSTRING_TO_STRBUF in other files (js_console.cpp, js_archive.c)
      (with larger target buffers) does not trigger the same warnings.
      10562789
    • Rob Swindell's avatar
      Merge branch 'dd_file_lister_get_extd_info_null_check_and_allow_edit_filename' into 'master' · e1bd17e3
      Rob Swindell authored
      DD file lister: Check for null when getting extended metadata from the DB (possibly caused by corruption). Also, allow changing the filename when editing file info/metadata.
      
      See merge request !459
      e1bd17e3
    • Eric Oulashin's avatar
      DD file lister: Check for null when getting extended metadata from the DB... · 806cd5b5
      Eric Oulashin authored and Rob Swindell's avatar Rob Swindell committed
      DD file lister: Check for null when getting extended metadata from the DB (possibly caused by corruption). Also, allow changing the filename when editing file info/metadata.
      806cd5b5
  2. Sep 13, 2024
    • Rob Swindell's avatar
      Add keyboard shortcuts to Clients list view: Ctrl-A, Ctrl-F and Del · c31203fc
      Rob Swindell authored
      Ctrl-A - Select All
      Ctrl-F - Filter IP address
      DEL - Close Socket
      
      Also, use Begin/EndUpdate() calls to batch updates to the ListView in Timer
      tick (no visible difference, but it's the right thing to do).
      
      I don't know why C++Builder increased the TextHeight value of this form from
      13 to 15, but doesn't seem to really matter (or at least, I couldn't tell).
      c31203fc
    • Rob Swindell's avatar
      Change the height of the horizontal splitter to the minimum (1 pixel) · 513715f0
      Rob Swindell authored
      I don't know why this was set so wide (10 pixels), but that did help to easily
      see that it was being placed in the wrong spot in the form (between the tool
      button bar and the top panel). But we don't need it to be that thick. 1 pixel
      is still enough to be able to grab it with the mouse and resize the top/bottom
      panels.
      513715f0
    • Rob Swindell's avatar
      Display horizontal splitter in the correct spot. · 89637f0d
      Rob Swindell authored
      For who knows how long now, the horizontal splitter that allows the sysop
      to control the size of the top 2 panels (server forms), was displayed above
      the top panel, not between the top and bottom panel, thus making the panel
      heights not controllable. Weird. Change the order of making the controls
      visible to insure that the splitter is displayed below the top panel and
      on top of the bottom panel.
      
      Also (non-functional changes):
      Remove redunant mutex from client_on() - makes no difference.
      Use try/catch in client_on() to try to catch VCL exceptions - doesn't catch
      the "invalid index" error popups that we see on occasion. <shrug>
      89637f0d
    • Rob Swindell's avatar
      Fix crash due to use after free or double-free · aff554a4
      Rob Swindell authored
      ... bug introduced in commit 29a35642.
      
      strListMerge() doesn't realloc the strings in the list, so we don't want to
      free the strings in this list here.
      
      This is likely the cause of the crash Keyop eluded to in #synchronet.
      aff554a4
  3. Sep 12, 2024
    • Rob Swindell's avatar
      Close an open message base after just 10 seconds of client inactivity · 3f0bbb17
      Rob Swindell authored
      ... and log a debug-level log message when doing so.
      
      The current input/receive timeout duration (5 minutes) might be a bit long to
      leave a message base open (though, there's no known issue with doing so). For
      example, when users read message bases using the terminal server, they can sit
      for much longer than 5 minutes reading an open message base.
      3f0bbb17
    • Rob Swindell's avatar
      Close any open message base after input timeout (5 minutes) · 04340d91
      Rob Swindell authored
      As Nelgin pointed out, the nntpservice can leave a message bases open while
      a client is idle. Normally, an inactive client would be disconnected after 5
      minutes of inactivity, so that wouldn't be much of an issue. However, if
      authenticated as a user with the H-exemption, no auto-disconnection after
      input timeout would happen. So let's close any open message base for good
      measure.
      
      The input/receive timeout probably should be configurable and lowered to
      a smaller duration (one minute?). I'll leave that for another commit.
      04340d91
    • Rob Swindell's avatar
      Split-up the opening and writing of msg pointer files, to help debug issue · 20cfdb18
      Rob Swindell authored
      Reported by Keyop (upon being auto-disconnected overnight):
      !ERROR 9 (Bad file descriptor) in data_ovl.cpp line 47 (putmsgptrs) writing
      "message pointers" access=0
      
      Unfortunately, the way putmsgptrs() was written, we couldn't tell if this was
      an open (data/user/*.subs file) issue or a writing issue.
      
      So create putmsgptrs_fp() and use that from sbbs_t::putmsgptrs(), so we can
      log a different error (with more accurate details) if it's a file-open failure
      versues a file-write failure.
      20cfdb18
    • Rob Swindell's avatar
      Merge branch 'ree/websocketservice-debug' into 'master' · 72f27c93
      Rob Swindell authored
      Fix #782 - websocketservice.js garbles input on Banana Pi running Armbian
      
      Closes #782
      
      See merge request !458
      72f27c93
    • Rick Parrish's avatar
      Fix #782 - websocketservice.js garbles input on Banana Pi running Armbian · 93434d07
      Rick Parrish authored and Rob Swindell's avatar Rob Swindell committed
      93434d07
    • Rob Swindell's avatar
      Blocked IP addresses in ip-silent.can weren't filtered from QWK and REP pkts · 29a35642
      Rob Swindell authored
      The "from_ip" header field of QWK messages is checked against blocked IP
      addresses, but was only checking against IP addresses from ip.can, not any
      addresses listed in ip-silent.can. These 2 list files are now merged together
      for the purposes of filtering during QWK/REP packet import.
      29a35642
  4. Sep 10, 2024
    • Rob Swindell's avatar
      Indicate vote/poll messages and files (with details) when listing msgs/files · d84b8e3d
      Rob Swindell authored
      Add '-v' (increase verbosity) option, used to display msg dates and timezones
      ... when using the the 'l' (list messages) command (to view post date/time).
      Use '-vv' or '-v -v' to see timezones of messages.
      
      The -v option is now also applicable to the 'v' (view) messages command (now
      redundant with the 'V' command).
      
      Features as requested by Nelgin as part of issue #786.
      
      Removed day-of-week from date/times displayed. We don't need that level of
      user-friendliness with this tool.
      However, we are also displaying 12h/am/pm times. Some sysops probably would
      prefer 24hour time, so that should be considered at some point.
      d84b8e3d
    • Rob Swindell's avatar
      Don't check header fields of deleted messages for control characters · 0fd380f8
      Rob Swindell authored
      ... related to issue #786.
      
      Also, don't check for a message-ID if the message-type does not match the
      expected message type ("type mismatch").
      0fd380f8
    • Rob Swindell's avatar
      Refactor the function: unpack_bundle() · 0f0a8a1a
      Rob Swindell authored
      1. When a 0-length bundle file was encountered or an unpacking error occurred,
         any remaining bundles for the current search day-of-week (e.g. *.SU*) would
         be skipped/ignored. This bug (issue #764, regarding the 0-length file part),
         is fixed by not incrementing the day-of-week index in the main loop, but
         rather only incremeting the index when all bundles for the current
         day-of-week have been processed.
      2. The age calculation for 0-byte/length bundle files was incorrect, so all
         0-length  bundle files would always be considered "less than 24-hours old"
         (and thus, never auto-deleted).
         This exacerbated the problem of issue #764 since it would persist until the
         0-length files were manually deleted. Fixed the file age calculation and
         now logging the date/timestamp of the 0-length file as well.
      3. Don't do the switch/case/sprintf dance when we're not re-running a glob()
         search.
      4. Replace the switch/case statement with an array of week day names/patterns.
      5. Ignore (with a warning log message) any sub-directories of the inbound
         directory that happen to match the bundle file search pattern.
      6. Use better variable naming.
      7. Refer to files with a length of 0 as "0-length" instead of "0-byte" in log
         messages.
      0f0a8a1a
  5. Sep 09, 2024
  6. Sep 07, 2024
  7. Sep 06, 2024
  8. Sep 05, 2024
  9. Sep 04, 2024
  10. Aug 28, 2024
  11. Aug 27, 2024
    • Rob Swindell's avatar
      Fix NULL pointer deref in random_menu() · 46c603ce
      Rob Swindell authored
      When no files with extensions are found, though they matched the glob()
      pattern, a NULL pointer deref would result (segfault).
      
      This could happen if the only files matching the pattern had no extenions or
      were directories (not files).
      
      Fix for issue #779
      46c603ce
  12. Aug 23, 2024
    • Rob Swindell's avatar
      Don't call utime() on the node.dab file for every read · e93b6dfa
      Rob Swindell authored
      ... this was the cause of some observed unnecessarily high disk/file server
      (Samba) utilization, as we call getnodedat() a lot. utime() opens and closes
      the file, which was already open - and we're not modifying the file, so
      updating the 'modification time' here is wrong anyway.
      
      Disabling this 21-year old bit of logic resulted in a pretty dramatic
      reduction in Samba (smbd) CPU utilization on Vertrauen.
      
      If a BBS actually needes this hack (e.g. for NFS compatibility, as Deuce
      eluded in the comment), they'd be better off just setting the "Keep Node File
      Open" node setting (in SCFG->Nodes) to "No".
      e93b6dfa
    • Rob Swindell's avatar
      Extend (and back-off) the user.tab record lock attempts · 69fc70ab
      Rob Swindell authored
      I'v been getting errors locking user.tab (for read) for a while (over samba),
      so hopefully this helps. The lockuserdat() total timeout duration extends from
      about 5 seconds to about 45 seconds (with an incremental back-off).
      
      Implement the same lock-retry logic/limit in putuserdat().
      69fc70ab
  13. Aug 20, 2024
  14. Aug 19, 2024
  15. Aug 18, 2024
Loading