Skip to content
Snippets Groups Projects
  1. Feb 21, 2019
  2. 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
  3. Feb 19, 2019
    • rswindell's avatar
      Fix long-standing bug in js_ParseMsgHeaderObject which is only (currently) · 121e87b7
      rswindell authored
      used by js_post_msg() (the JS bbs.post_msg() method when used with the
      reply_header object argument) - the private data attached to a message
      header object is of type privatemsg_t, not private_t. This caused the
      dereferences of and assignments to p->smb_result in parse_header_object()
      to corrupt the privatemsg_t->msg memory causing heap corruption (caught
      on Windows debug builds in js_get_msg_header_finalize()) and stack faults
      (caught on Linux-gcc in parse_recipient_object()). This one was hard to
      find. <whew!>
      121e87b7
    • rswindell's avatar
      Re-work the column-counting in outchar(). · 27c9842c
      rswindell authored
      I noticed that printable ctrl chars (e.g. 0x18 and 0x19) were not causing the
      current column position to increment, so that got me looking at this code and
      wondering why the LF/FF checking was outside the if(!outchar_esc) condition
      and being executed when CON_R_ECHO is off. So now, using a switch statement,
      it's cleaner and all the printable ctrl chars move the current column position
      correctly.
      27c9842c
    • rswindell's avatar
      sbbs_t::postmsg() and JS's bbs.post_msg() changes: · d95d30ea
      rswindell authored
      When the WM_QUOTE mode flag is set and the 'remsg' is specified, the original
      message will quoted (excluding message tails, using the proper word-wrapping).
      If the quote file already exists before calling postmsg()/bbs.post_msg(), it
      will be over-written. This allows JS script to initiate reply-posts with quoted
      text without having to create their own quotes file. It also means there's no
      need to call sbbs_t::quotemsg() before calling sbbs_t::postmsg().
      sbbs_t::quotemsg() now takes an smb_t* arg (stop using the sbbs_t 'global'
      smb) and now returns bool.
      d95d30ea
    • rswindell's avatar
      Fix bbs.post_msg() JSDOC description: mode defaults to WM_NONE, not WM_MODE. · 2c82a9dd
      rswindell authored
      Renamed js_postmsg() -> js_post_msg() for good measure.
      2c82a9dd
    • rswindell's avatar
      fee12237
  4. Feb 18, 2019
  5. Feb 17, 2019
  6. Feb 16, 2019
  7. Feb 15, 2019
  8. Feb 14, 2019
    • rswindell's avatar
      Include the Synchronet revision (e.g. 'c') in the "SYSTEM" value of the QWK · be1c57c6
      rswindell authored
      DOOR.ID file created by Synchronet.
      be1c57c6
    • rswindell's avatar
      For normal (non-QWKnet) users, when packing QWK packets, include the · 989955bb
      rswindell authored
      plain-text portion (only) for MIME-encoded messages (emails). If/when there
      are ever QWK readers that support MIME-decoding, I'll make this behavior
      configurable. :-)
      When passing mail between QWKnet nodes, leave the original MIME-encoding in
      tact (if there is any).
      989955bb
    • rswindell's avatar
      Fix potential for heap corruption in (new function) strListModifyEach(): · 7c7a2c14
      rswindell authored
      If the modify callback function returned a pointer *within* the list item's
      allocated buffer, the strcpy() would copy from potentialy free'd memory as
      realloc may change the location of the heap buffer when resizing.
      Fixed by allocating a copy of the returned pointer before freeing the original
      list item buffer and then just assign the allocated pointer (no copying
      needed). This likely will result in more heap fragmentation for modified list
      items are now newly-allocated buffers rather than reallocated existing buffers
      but the other option would have been to allocate a temporary copy of the string
      before reallocating and then copying and that would've been a lot more overhead
      than with this approach.
      
      This likely fixes any crashes seen in recent revs of v3.17c (e.g. when
      imported QWK or REP packets and text/*.can and the twitlist.cfg are parsed).
      The sighting on Vertrauen was only in the Windows build and appeared when
      importing QWK/REP packets.
      7c7a2c14
Loading