Skip to content
Snippets Groups Projects
  1. Dec 21, 2024
    • Rob Swindell's avatar
      Fix off-by-one error in date/time field bit-mask calculation · f9ad15e8
      Rob Swindell authored
      This became apparent when the the LSB of the day got set (an odd
      day). Oops.
      
      This only impacted decoding of date/time, not encoding.
      f9ad15e8
    • Rob Swindell's avatar
      Encode local wallclock (not time_t) in SMB's when_t.time · 445394f9
      Rob Swindell authored
      Increment SMBLIB version to 3.10
      
      Fix issue #845: Changing system/OS time zone, changes dates/times of posted
      messages
      
      Sysops and users shouldn't notice any change unless they change the time zone
      of their system/OS (not accounting changes for daylight/standard time) and
      the result will be that message dates appear the same after such a change.
      
      For backward compatibily, any stored time_t's in msghdr_t.when_written.time
      (i.e. all existing SMB messages) will still be decoded and displayed properly.
      We detect a time_t value by the upper 6 bits being non-zero. When the upper
      6 bits of a when_written.time value are zero, then we know the 'year' is
      stored in the 16-bits before the when_written field (never used bits of the
      netattr field, now part of the when_t structure definition) and the Month,
      Day, Hour, Minute, and Second of the wallclock at the poster's site are
      encoded in the low 26 bits of the time field.
      
      This also eliminates more uses of 32-bit time_t that'll likely start being
      a problem 2038 and really fall over and die in 2106. At least messages'
      posting dates won't have any issue now. The "when_imported" values could use
      a similar treatment someday I suppose - and we could get rid of the
      when_imported.zone value as its not really needed we could use those 16-bits
      for the when_imported.year.
      
      Didn't change anything with filebases (still using time_t's though the
      when_written hdr field isn't used for much with regards to files).
      
      Yes, we could have converted all imported "broken down" message dates to
      UTC and continued to store them as a time_t using timegm() instead of mktime()
      for conversion to time_t, and I considered that. But we would have needed to
      create/use a flag in the message header to indicate such stored date/times
      (since they'd have to go through different adjustment for original time zone
      before display, basically reversing the logic of all the places we display the
      message dates/times using localtime verus gmtime/UTC C RTL functions),
      couldn't just initialize the time with a call to time() upon import of local
      messages (unless the local timezone happened to be UTC). And in the end, we'd
      still have a 32-bit time_t value. So this seemed the better path.
      
      I would have liked to have stored the date fields in a more human readable
      encoding (BCD or decimal, ala isoDate and isoTime_t), but I just didn't have
      the spare bits in the fixed portion of message headers to be wasteful like
      that.
      
      Here's an example from smbutil v of a message header posted after this change:
        when_written     03292595 41E0 Fri Dec 20 18:22:21 2024 PST
        when_imported    6766265D 41E0 Fri Dec 20 18:22:21 2024 PST
      
      Notice the difference in the hex encoding of the date/time between the 2
      header fields: when_imported still uses time_t. The when_written.year value
      isn't output here.
      445394f9
  2. Dec 20, 2024
    • Rob Swindell's avatar
      Change security level 0 to be more forgiving · f867a667
      Rob Swindell authored
      changed from 0 to 1:
       timeperday
       timepercall
       callsperday
       postsperday
       emailperday
      
      There are restrictions to remove access to these features if that's what the
      sysop desires.
      
      This will allow unauthenticated mail clients to post a single message (per day)
      to a sub-board, when there's a posting alias set up (sub:* in alias.cfg).
      f867a667
    • Rob Swindell's avatar
      Include both x64 and x86 binaries in install package · 89422380
      Rob Swindell authored
      ... and auto-choose the right one
      
      Tested on Windows 11 (x64) and Windows7-32
      89422380
    • Rob Swindell's avatar
    • Rob Swindell's avatar
      Updated for SyncTERM v1.3 · 99d5fb25
      Rob Swindell authored
      Don't install the fonts to the syncterm.ini, Deuce says they confuse sysops.
      
      Renamed the setup.exe file due to warning from ISS about security concerns.
      
      Tested on Windows 11.
      99d5fb25
    • Rob Swindell's avatar
      Only use RtlGetVersion for Windows 10/11 · 0c385ef2
      Rob Swindell authored
      This function appears to truncate the service pack info for Windows 7 (6.1):
      "Windows NT Version 6.1 (Build 7601) Service Pack 1 x86" became:
      "Windows NT Version 6.1 (Build 7601) S x86"
      
      Don't close the handle to ntdll.dll (hey, that's stupid filename, Microsoft!)
      since the module could be unloaded from the address space and then a call to
      the captured procedure address could/would crash. This handle will be closed
      when the process terminates anyway.
      
      While we're here, correct the Windows 6.1 -> 7.0 numbering. That looks better:
      "Windows NT Version 7.0 (Build 7601) Service Pack 1 x86"
      
      Something should probably be done for Windows 6.2 -> 8.0 numbering too, but I
      don't have a VM handy. Is anyone actually still running Windows 8.x?
      0c385ef2
    • Rob Swindell's avatar
      Move the #pragma warning to just before the call to GetVersionEx() · d58cc13f
      Rob Swindell authored
      Needed for building sbbsexec.dll
      
      I guess #pramga warning only affects the following source line.
      
      Apparently we're disabling this warning effectively via other means in all
      other MSVC projects.
      d58cc13f
    • Rob Swindell's avatar
      Use RtlGetVersion to get/report Windows 11 (and build number) correctly · 8084997b
      Rob Swindell authored
      This is fun Microsoft. If Windows 11 is actually Windows 10.22000+, what will
      Windows 12 be? No one can guess.
      8084997b
    • Rob Swindell's avatar
      Add @-codes to display dates/times in UTC · 9f2c2e51
      Rob Swindell authored
      When the system time zone is not UTC, but the sysop wants to display some
      dates and times in UTC, they can now use these @-codes to do that:
      - TIME_UTC
      - DATE_UTC
      - UTC:fmt
      - DATETIME_UTC
      - MSG_DATE_UTC
      9f2c2e51
  3. Dec 19, 2024
    • Deucе's avatar
      I *think* this is "FreeBSD or Solaris"... · a4579ec1
      Deucе authored
      Nobody will really care though.
      a4579ec1
    • Rob Swindell's avatar
      Go back to using non-blocking periodic/polling user.tab lock attempts · d0e0e8c9
      Rob Swindell authored
      This partially reverts commit 03b84df8.
      
      I observed deadlocks on Linux attempting locks of user.tab on Samba share,
      which also deadlocked my Windows nodes. Interestingly, the Windows nodes
      never deadlocked on their own (after a week of testing) when using blocking
      locks.
      
      Double the frequency of lock retries - this has helped reduce the observed
      user.tab lock failures on Vertrauen.
      d0e0e8c9
    • Rob Swindell's avatar
      Add "Auto" Local Time Zone option and make that the default for new install · 5434b904
      Rob Swindell authored
      As Deon pointed out in DOVE-Net / Synchronet Discussion, having a local time
      zone configured with a different UTC offset than your system time zone can
      produce strange/unexpected results (e.g. displayed age of messages). Since
      it's possible that not all sysops will complete the configuration wizard or
      actually set their timezone to the correct value (and ignore the startup
      warning message), we now make the default Local Time Zone to be
      "automatic" - query the OS every time the local time zone is needed/used.
      
      This has the downside of only storing (e.g. in message headers) the UTC
      offset of the current time zone (not the time zone abbreviation/name as
      encoded by SMB). I considered making an option to dynamically figure out
      the actual time zone (not just the UTC offset) and while I think that's
      doable, Deon just wanted his UTC offset (e.g. UTC+11:00) and not his
      time zone name (e.g. AEDT) stored in message headers, so this setting
      would be the behavior he expected/wanted.
      
      I'm using the sentinel time zone value of -1 for this new behavior.
      
      Existing configurations (behavior of existing systems) aren't changed.
      5434b904
    • Rob Swindell's avatar
      Updated for webv4 and fix off-by-one error reported by LaF0rge · 7a02ba30
      Rob Swindell authored
      Make the scheme ("http://" or "https://") configurable via rss.ini, default is
      now "https://".
      
      Make the message link format somewhat configurable via rss.ini (hopefully to
      support some other/future web message reading interface should there be one).
      
      Reportedly, the MsgBase.get_msg_header/body() calls of the "total_msgs" offset
      were logging errors? I was not able to reproduce this (the !hdr check seemed
      to be successfully ignoring such cases), but in any case, message offsets are
      0-based, so this was definitely an off-by-one issue, even if it was a silent
      failure for everyone else. <shrug>
      7a02ba30
    • Rob Swindell's avatar
      Fix default for "U.S. Time Zone" toggle when west of UTC · dbf8f666
      Rob Swindell authored
      ... when current timezone is negative offset from UTC, but not a US time zone,
      the default should be "No".
      dbf8f666
    • Rob Swindell's avatar
      Merge branch 'dd_msg_reader_scrolling_read_input_timeout_fix' into 'master' · 261324a6
      Rob Swindell authored
      DDMsgReader bug fix: In the scrolling message reader interface, it now exits on user input timeout (as it should). This should fix issue #844, reported by Keyop
      
      Closes #844
      
      See merge request main/sbbs!483
      261324a6
    • Eric Oulashin's avatar
      DDMsgReader bug fix: In the scrolling message reader interface, it now exits... · 095951c6
      Eric Oulashin authored
      DDMsgReader bug fix: In the scrolling message reader interface, it now exits on user input timeout (as it should). This should fix issue #844, reported by Keyop
      095951c6
    • Deucе's avatar
      Well, that didn't work, just disable the backtrace on Linux · cfdaf02e
      Deucе authored
      Presumably it's because I'm not using std=gnu11 or whatever
      cfdaf02e
    • Deucе's avatar
      We can't do a backtrace using musl · 9750692d
      Deucе authored
      Use the same hack as for strerror_r()
      9750692d
    • Deucе's avatar
      include signal.h for signal() · 9a588197
      Deucе authored
      9a588197
  4. Dec 18, 2024
  5. Dec 17, 2024
  6. Dec 16, 2024
  7. Dec 15, 2024
  8. Dec 14, 2024
  9. Dec 12, 2024
Loading