Skip to content
Snippets Groups Projects
  1. Mar 16, 2019
  2. Mar 15, 2019
    • rswindell's avatar
      Fix (or work-around?) ScalingFactor issue reported by ogg in fsxNet->FSX BBS: · dca11a6f
      rswindell authored
      The ScalingFactor would always (or usually) reset to 1 and have to be reset
      e.g. to 2, by resizing the window manually, every time SyncTERM was run.
      
      I found that by calling textmode() *after* setscaling() rather than before
      fixed this issue (at least in SDL mode on Ubuntu Linux). Another "fix" that
      worked inserting a small (100ms) delay between the calls to textmode() and
      setscaling() - so there appears to have been a race condition and calling
      setccaling() too soon after text mode() would fail to change the window
      size successfully. Reordering these calls seems to work 100% of the time
      without any additional delays. <shrug> Deuce would likely know "why" better
      than I.
      dca11a6f
  3. Mar 13, 2019
    • rswindell's avatar
      Rewind the msgbase index file before calling fread(). The fread() would · 0032f847
      rswindell authored
      fail if the current file pointer (offset) was not currently at the beginning
      of the file. So calling MsgBase.get_all_msg_headers() after previously calling
      any method that read/seeked the index would cause the reported error:
      "index read (xxxx) failed"
      0032f847
    • rswindell's avatar
      More strict FidoNet address detection (e.g. so IPv6 addresses aren't · 7f1471af
      rswindell authored
      detected as net_type NET_FIDO).
      7f1471af
    • rswindell's avatar
      smb_netaddr_type() (exposed via JS as netaddr_type()) change: · d90ea2b8
      rswindell authored
      prior to rev 1.29 of this file (committed almost exactly one year ago), when
      called with any string that did not include an '@', would return NET_NONE (0).
      After rev 1.29, most strings that did not include an '@' would cause the
      function to return NET_QWK (4) - this was not intentional. The intention was
      that FidoNet addresses without an '@' would cause this function to return
      NET_FIDO (2) and I don't exactly remember why that change was made, but
      unfortunately, it wasn't made very well, so other invalid addresses would be
      detected as NET_QWK or NET_INTERNET or even NET_UNKNOWN.
      So before and after this commit:
      "" was NET_UNKNOWN, now NET_NONE
      "1" was NET_FIDO, now NET_FIDO
      "1x" was NET_INTERNET, now NET_NONE
      "1:103" was NET_FIDO, now NET_FIDO (this could use some work)
      "x" was NET_QWK, now NET_NONE
      d90ea2b8
    • rswindell's avatar
      When extracting FILE_ID.DIZ/DESC.SDI, search through the exractable file · 8bd7cbdd
      rswindell authored
      types twice - first to see if one matches the requirements. If none match,
      then search again just for an extractor matching the file extension.
      Modernize the get_file_diz() function a little bit (e.g. return bool).
      8bd7cbdd
    • rswindell's avatar
      Moved the copy/pasted FILE_ID.DIZ/DESC.SDI code (3 times!?!) into its own · 3bc8ba86
      rswindell authored
      function.
      Constify mycmdstr() arguments.
      Removed trailing whitespaces.
      No functional changes expected by this commit.
      3bc8ba86
  4. Mar 10, 2019
  5. Mar 09, 2019
  6. Mar 08, 2019
  7. Mar 07, 2019
    • deuce's avatar
      There appears to be data corruption in cryptlib if a private key is added · 211a2a1a
      deuce authored
      to a second thread before the first has the session set active.  Add calls
      to lock/unlock the certificate to prevent this.
      
      The better options is likely to have a function that adds the key and socket
      and sets the session active in one call and handles the locking internally.
      
      But I'm lazy, so we get the lock functions.
      211a2a1a
  8. Feb 28, 2019
    • rswindell's avatar
      Implement an (in-memory) Avatar cache - reducing the number of disk accesses · cb205ec3
      rswindell authored
      when using features that support avatars (e.g. reading msgs, listing files,
      listing BBSes in the BBS list).
      When used in the terminal server, the cache is located in bbs.mods.avatar_cache
      otherwise it's located in the scope of the load()'d library. Applications must
      use the lib's read() method to take advantage of the cache. The other lower
      level functions (e.g. read_localuser, read_netuser) by-pass the cache on read
      but do update the cache with the result. So, generally, avatars should be only
      loaded from disk one time during a session/logon.
      cb205ec3
  9. Feb 21, 2019
  10. Feb 20, 2019
    • rswindell's avatar
      Reversed course on the WM_QUOTE mode handling in sbbs_t::postmsg() · 57424543
      rswindell authored
      (JS bbs.post_msg()): If the WM_QUOTE mode flag is *not* set, then it will auto-
      create the quote file (quotes.txt) and add the WM_QUOTE mode bit before calling
      sbbs_t::writemsg(). So if existing JS scripts call bbs.post_msg(..., WM_QUOTE)
      with a custom-created quote file (e.g. with msg tails), that'll still work as
      before (e.g. DDMsgReader.js).
      
      bbs.email() and bbs.netmail() now support an optional reply_header_object
      argument which works like bbs.post_msg(). These methods (and the underlying
      C++ methods: sbbs_t::email(), netmail(), inetmail(), all auto-create the
      quote file now, when the WM_QUOTE mode flag is *not* set.
      
      The auto-created quotes.txt now includes the plain-text version of MIME-encoded
      messages.
      
      the bbs.post_msg(), email(), and netmail() methods now all support reply
      header objects that came directly from bbs.get_msg_header() *or* copies of
      such header objects (but the auto-quoting feature won't work when supplied
      this type of header object). So if passed a header object returned from
      bbs.get_msg_header(), we can now use the message base (for auto-quoting) and
      the underlying msg storage directly (no JS parsing necessary). This is what
      the new js_GetMsgHeaderObjectPrivates() function is used for.
      
      js_ParseMsgHeaderObject() (and the underlying parse_header_object() function)
      now supports either an actual internally-generated msg header object (e.g.
      returned from bbs.get_msg_header()) or one that is a copy or hand-constructed.
      
      quotemsg() no longer tries to get a copy of the msg index/header. It shouldn't
      have to since we can now get to underlying msg storage in the js_msgbase.c
      via js_GetMsgHeaderObjectPrivates().
      
      quotemsg() now reads only the plain-text portion of MIME-encoded messages.
      
      As part of this effort, I modernized the method prototypes using default
      argument values (e.g. WM_NONE for wm_mode arguments) and removed some
      extraneous WM_EMAIL and WM_NETMAIL specifications (these wm_mode flags are
      automatically added by the sbbs_t::email() and *netmail() functions).
      
      savemsg() now *does* support reply-IDs/thread-linkage via the additional
      'remsg' argument (when non-NULL).
      
      Replaced some use of nulstr with NULL.
      
      Replaced more boilerplate SMB open code with calls to smb_open_sub().
      57424543
  11. Feb 19, 2019
  12. Feb 18, 2019
  13. Feb 17, 2019
Loading