• exec/imapservice.js

    From Deucе@1:103/705 to Git commit to main/sbbs/master on Sunday, November 10, 2024 16:14:22
    https://gitlab.synchro.net/main/sbbs/-/commit/a28da743101258c0c1c2fbd5
    Modified Files:
    exec/imapservice.js
    Log Message:
    Fix bug introduced in aecde4068 (2018)

    Properly read the index of the base, not of the base_code.
    Fixes badly broken STATUS command.
    --- SBBSecho 3.21-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Monday, November 11, 2024 01:43:03
    https://gitlab.synchro.net/main/sbbs/-/commit/99df0ed4b886d71c1d60be60
    Modified Files:
    exec/imapservice.js
    Log Message:
    Optimize read/save of Seen config

    Previously, this uses INI format files, with ini file accessors
    to read and save this file. Now it just dumps a JSON file in and
    slurps it out.

    This saves about 0.4s/msg on my system when reading headers.
    --- SBBSecho 3.21-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Monday, November 11, 2024 01:43:03
    https://gitlab.synchro.net/main/sbbs/-/commit/ebeb50752e06140290316229
    Modified Files:
    exec/imapservice.js
    Log Message:
    Do some more optimizations around setting the Seen flag.

    This speeds things up a fair bit, and will make things faster after
    an initial scan. I may expand this method a bit to lock other sockets
    for for either some period of time or some number of messages to
    allow the initial scan to be even faster.
    --- SBBSecho 3.21-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Monday, November 11, 2024 10:25:21
    https://gitlab.synchro.net/main/sbbs/-/commit/0827b4a3f71054326fa9cdb1
    Modified Files:
    exec/imapservice.js
    Log Message:
    Hold config lock for whole sequence.

    Rather than locking for just one message, lock for the entire command
    when potentially updating Seen data. With this, we can block all
    connections the user has except the currently executing one, and
    not need to read/write the seen data between every message.

    While this can take minutes on very large subs, it's certainly
    better than hours as previously.

    It's rude to have multiple sockets actively pumelling the server
    anyway.
    --- SBBSecho 3.21-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Monday, November 11, 2024 11:09:45
    https://gitlab.synchro.net/main/sbbs/-/commit/79a6d872d87dddbbdbc5a592
    Modified Files:
    exec/imapservice.js
    Log Message:
    Fix deadlock introduced in last commit.
    --- SBBSecho 3.21-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Monday, November 11, 2024 11:28:00
    https://gitlab.synchro.net/main/sbbs/-/commit/6ab2d322562fe041e2f188c9
    Modified Files:
    exec/imapservice.js
    Log Message:
    Update fix in e0e1fc389c

    Instead of text with completely different meaning, change the "no body"
    text to a single space.
    --- SBBSecho 3.21-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Monday, November 11, 2024 11:41:04
    https://gitlab.synchro.net/main/sbbs/-/commit/2294bf8fbbe6490e8f9bbb01
    Modified Files:
    exec/imapservice.js
    Log Message:
    Add comment as to why the body is being replaced.
    --- SBBSecho 3.21-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Monday, November 11, 2024 13:43:41
    https://gitlab.synchro.net/main/sbbs/-/commit/d1f89436b9afd699ec7f6ec0
    Modified Files:
    exec/imapservice.js
    Log Message:
    Don't map new-scan config to IMAP subscriptions

    The sets of message bases you want to get over different protocols
    may be different.

    While we're here, fix an error with single-parameter FETCH parsing
    which prevented Sylpheed from being able to read messages.
    --- SBBSecho 3.21-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Monday, November 11, 2024 14:56:25
    https://gitlab.synchro.net/main/sbbs/-/commit/fbe3b5d7311501f51f346b85
    Modified Files:
    exec/imapservice.js
    Log Message:
    Fix handling of short send()s

    For some reason, I thought socket.send() did this, but apparently
    not. Fixes issue transferring large messages.

    Also, add support for the useless NAMESPACE command.
    --- SBBSecho 3.21-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Monday, November 11, 2024 15:12:13
    https://gitlab.synchro.net/main/sbbs/-/commit/53d11d54dd59f9720e003de3
    Modified Files:
    exec/imapservice.js
    Log Message:
    NAMESPACE didn't help with Claws/Sylpheed.

    Change the message.
    --- SBBSecho 3.21-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Monday, November 11, 2024 23:50:59
    https://gitlab.synchro.net/main/sbbs/-/commit/292028f3d456fa73c6a3958e
    Modified Files:
    exec/imapservice.js
    Log Message:
    poll() for write, and break on sock.send() returning zero

    Should fix log-padding infinite loop.
    --- SBBSecho 3.21-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Tuesday, November 12, 2024 00:00:12
    https://gitlab.synchro.net/main/sbbs/-/commit/2a76ffdf925f9539751a61cc
    Modified Files:
    exec/imapservice.js
    Log Message:
    Add a bit of paranoia to the infinite loop in lock_cfg() too.
    --- SBBSecho 3.21-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Tuesday, November 12, 2024 00:03:31
    https://gitlab.synchro.net/main/sbbs/-/commit/a8825b8a679fbf819e6cb441
    Modified Files:
    exec/imapservice.js
    Log Message:
    Add more paranoia.

    This is a suitable amount of paranoia now.
    --- SBBSecho 3.21-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Tuesday, November 12, 2024 09:44:32
    https://gitlab.synchro.net/main/sbbs/-/commit/31ae05c160698270c1c4f4e4
    Modified Files:
    exec/imapservice.js
    Log Message:
    Current IMAP standards to not allow additional text after FLAGS

    Remove the grease.
    --- SBBSecho 3.21-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Wednesday, November 13, 2024 17:57:19
    https://gitlab.synchro.net/main/sbbs/-/commit/e997e29330a1e02a4f2d2e54
    Modified Files:
    exec/imapservice.js
    Log Message:
    New IMAP search parser/generator

    Previously, the IMAP search tried to do sneaky things to optimize
    execution time, but that ended up with problems when nested ()s
    were used, among other, more subtle issues. Also, the old search
    wasn't even tested enough so that each term would work.

    The new system transpiles the IMAP query to Javascript then runs
    the compiled JS function for each message. Should be much more
    accurate (though may also be much slower).

    Actually fixes the issue reported as #397, and closes #730.
    --- SBBSecho 3.21-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Thursday, November 14, 2024 19:39:59
    https://gitlab.synchro.net/main/sbbs/-/commit/ce677196ec05ff3da906b6bb
    Modified Files:
    exec/imapservice.js
    Log Message:
    Increase lock timeout to 5 min, reset imap config on exception
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Thursday, November 14, 2024 19:58:07
    https://gitlab.synchro.net/main/sbbs/-/commit/36522b3bcadd7cc05b91c52f
    Modified Files:
    exec/imapservice.js
    Log Message:
    Fix UID FETCH deadlock.

    Also, after grabbing a lock, enter a try/catch that will unlock
    and re-throw the error.
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Thursday, November 14, 2024 23:59:12
    https://gitlab.synchro.net/main/sbbs/-/commit/387f12b93f0a531ecba9c1ec
    Modified Files:
    exec/imapservice.js
    Log Message:
    Fix BODYSTRUCTURE bug that prevented macOS Sequoia from loading messages

    Also, always use full_send(), not the socket send.
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Friday, November 15, 2024 08:12:47
    https://gitlab.synchro.net/main/sbbs/-/commit/1b6d5846a52d2bf273a58192
    Modified Files:
    exec/imapservice.js
    Log Message:
    Roll the epoch back to zero if it hits 9007199254740991

    It shouldn't though.
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Friday, November 15, 2024 09:24:33
    https://gitlab.synchro.net/main/sbbs/-/commit/d083201a3d690e463121ca11
    Modified Files:
    exec/imapservice.js
    Log Message:
    More Seen flag overhaul.

    This should now actually work properly.
    Also, add a debug_exceptions flag to rethrow exceptions so I can
    get line numbers.
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Friday, November 15, 2024 10:25:40
    https://gitlab.synchro.net/main/sbbs/-/commit/bdef333e8a7fb61c35123edb
    Modified Files:
    exec/imapservice.js
    Log Message:
    Save scan_ptr for all subs in config.

    Also, make save_cfg() require that the lock be held.
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Friday, November 15, 2024 10:31:07
    https://gitlab.synchro.net/main/sbbs/-/commit/b17ff3392fd2aaff8c2c2728
    Modified Files:
    exec/imapservice.js
    Log Message:
    If open_sub() fails, set readonly to true.
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Friday, November 15, 2024 11:54:26
    https://gitlab.synchro.net/main/sbbs/-/commit/4ff6bcde4e58cfb6da660161
    Modified Files:
    exec/imapservice.js
    Log Message:
    Simplify close_sub()

    Should be no functional change.
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Friday, November 15, 2024 12:49:28
    https://gitlab.synchro.net/main/sbbs/-/commit/ae5d70b18892a363329675ca
    Modified Files:
    exec/imapservice.js
    Log Message:
    Remove set-but-never-used msg_ptrs
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Friday, November 15, 2024 12:49:28
    https://gitlab.synchro.net/main/sbbs/-/commit/e0a367bdea0ef6d4c27d3362
    Modified Files:
    exec/imapservice.js
    Log Message:
    What I hope are the last \Seen and \Recent fixes.
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Friday, November 15, 2024 16:10:11
    https://gitlab.synchro.net/main/sbbs/-/commit/af159feca3fe112835b0f306
    Modified Files:
    exec/imapservice.js
    Log Message:
    Don't rollback scan pointer on sub close.
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Friday, November 15, 2024 19:08:40
    https://gitlab.synchro.net/main/sbbs/-/commit/9df9fdf1885c3278ec025859
    Modified Files:
    exec/imapservice.js
    Log Message:
    More speed optimizations

    1) Cache the binified seen data rather than regenerate every time
    2) Only call js.gc() after a complete fetch or store loop
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Friday, November 15, 2024 21:49:59
    https://gitlab.synchro.net/main/sbbs/-/commit/4119cc5e59b81e1bc0c98e3f
    Modified Files:
    exec/imapservice.js
    Log Message:
    Add a sanity check on saved config.

    I managed to hit a bug where bseen and seen were both completely
    filled. No idea how I hit it, so not positive it's fixed.

    This is cheap insurance against the 43k file groung to 1.6MB for
    someone else.
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Saturday, November 16, 2024 03:04:54
    https://gitlab.synchro.net/main/sbbs/-/commit/add2e0e273bb3626ee410896
    Modified Files:
    exec/imapservice.js
    Log Message:
    Some saved_config cleanup before splitting configs.
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Saturday, November 16, 2024 03:04:54
    https://gitlab.synchro.net/main/sbbs/-/commit/6fa958e9b1be895446c4d534
    Modified Files:
    exec/imapservice.js
    Log Message:
    Overhaul the saved config.

    Rather than a single file with config for all subs, use a separate
    file for each sub. This makes clients that do parallel connections
    to different mailboxes work much better, and make loading and saving
    the config for a mailbox much faster.

    The caching stuff is removed to simplify things, and hopefully won't
    need to come back... we should just not save config if it doesn't
    change.

    Only issue I'm still aware of is that 99% of IMAP clients just can't
    deal with slashes in mailbox paths. Like... at all. The protocol
    supports them, but every client seems to have a different way of
    breaking with them.
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Saturday, November 16, 2024 12:28:18
    https://gitlab.synchro.net/main/sbbs/-/commit/5ecec81c22623035fbd404d3
    Modified Files:
    exec/imapservice.js
    Log Message:
    Replace / with - in group/sub names

    Almost no clients support a / in names. Maybe I'll define an x-
    extension or something when I write my own mail client.
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Saturday, November 16, 2024 12:31:09
    https://gitlab.synchro.net/main/sbbs/-/commit/8dc5c89eb835563bf798dca5
    Modified Files:
    exec/imapservice.js
    Log Message:
    Wrap each cleanup step in a separate try/catch in exit func.

    Clean up as much as possible.
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Saturday, November 16, 2024 14:13:33
    https://gitlab.synchro.net/main/sbbs/-/commit/74403a96ba56a498efc17c3b
    Modified Files:
    exec/imapservice.js
    Log Message:
    Don't overwrite the offset with the IMAP offset, add a new one.
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Saturday, November 16, 2024 14:13:33
    https://gitlab.synchro.net/main/sbbs/-/commit/4db633b82b6a2acf5171cdb9
    Modified Files:
    exec/imapservice.js
    Log Message:
    "Final" optimizations

    Use the fastest message base access methods documented.
    Cache read/write configs and avoid parsing on read if unchanged.
    Make common saves dependent on there being changes.

    This is likely as good as it gets (assuming it works)
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Saturday, November 16, 2024 23:02:36
    https://gitlab.synchro.net/main/sbbs/-/commit/753ec4a9c9048ccaa4b737d1
    Modified Files:
    exec/imapservice.js
    Log Message:
    "support" CHARSET search parameter.

    Allow only US-ASCII, and send the BADCHARSET response code indicating
    that. Fixes issue with aerc.
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Monday, November 18, 2024 15:29:08
    https://gitlab.synchro.net/main/sbbs/-/commit/8a55e3e3a25c78540bfbcd5b
    Modified Files:
    exec/imapservice.js
    Log Message:
    Add log levels to the rest of the log() calls.
    --- SBBSecho 3.22-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)