• exec/imapservice.js

    From Deucе@VERT to Git commit to main/sbbs/master on Sun Nov 10 16:14:22 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Mon Nov 11 01:43:03 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Mon Nov 11 01:43:03 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Mon Nov 11 10:25:21 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Mon Nov 11 11:09:45 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/79a6d872d87dddbbdbc5a592
    Modified Files:
    exec/imapservice.js
    Log Message:
    Fix deadlock introduced in last commit.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Mon Nov 11 11:28:00 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Mon Nov 11 11:41:04 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Mon Nov 11 13:43:41 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Mon Nov 11 14:56:25 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Mon Nov 11 15:12:13 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Mon Nov 11 23:50:59 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Tue Nov 12 00:00:12 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Tue Nov 12 00:03:31 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Tue Nov 12 09:44:32 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Wed Nov 13 17:57:19 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Thu Nov 14 19:39:59 2024
    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

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Thu Nov 14 19:58:07 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Thu Nov 14 23:59:12 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Fri Nov 15 08:12:47 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Fri Nov 15 09:24:33 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Fri Nov 15 10:25:40 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Fri Nov 15 10:31:07 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/b17ff3392fd2aaff8c2c2728
    Modified Files:
    exec/imapservice.js
    Log Message:
    If open_sub() fails, set readonly to true.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Fri Nov 15 11:54:26 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/4ff6bcde4e58cfb6da660161
    Modified Files:
    exec/imapservice.js
    Log Message:
    Simplify close_sub()

    Should be no functional change.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Fri Nov 15 12:49:28 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/ae5d70b18892a363329675ca
    Modified Files:
    exec/imapservice.js
    Log Message:
    Remove set-but-never-used msg_ptrs

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Fri Nov 15 12:49:28 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Fri Nov 15 16:10:11 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/af159feca3fe112835b0f306
    Modified Files:
    exec/imapservice.js
    Log Message:
    Don't rollback scan pointer on sub close.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Fri Nov 15 19:08:40 2024
    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

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Fri Nov 15 21:49:59 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sat Nov 16 03:04:54 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/add2e0e273bb3626ee410896
    Modified Files:
    exec/imapservice.js
    Log Message:
    Some saved_config cleanup before splitting configs.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sat Nov 16 03:04:54 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sat Nov 16 12:28:18 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sat Nov 16 12:31:09 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sat Nov 16 14:13:33 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sat Nov 16 14:13:33 2024
    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)

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sat Nov 16 23:02:36 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Mon Nov 18 15:29:08 2024
    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.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net