Art Cancro [Tue, 26 Sep 2023 04:13:35 +0000 (00:13 -0400)]
view_mail.js: throbber and "Processing dropped files..." message appears
"Processing dropped files..." is not exactly the right message because
the upload message might have been clicked, but I don't want to throw
away the translations of that message.
Anyway, it's really cool, they appear in the list, and go away when the
uploads are complete.
Art Cancro [Tue, 26 Sep 2023 03:35:17 +0000 (23:35 -0400)]
Simplify the upload dialog.
Reduce the number of divs and make it more generic. Allow the upload dialog to
be attached to any parent div. Make the dialog appear automatically when a file
is dragged into the parent div.
Art Cancro [Tue, 26 Sep 2023 02:44:10 +0000 (22:44 -0400)]
view_mail.js: move upload dialog from ctdl_big_modal to ctdl-upload
Uploads now have their own div in their own separate modal.
This is, of course, because I am trying to loosely couple the uploader so
that it can be attached to other parts of the system when needed.
Also I realized that my div names are ctdl-not ctdl_consistent with each other.
Trying to fix that.
Art Cancro [Tue, 19 Sep 2023 20:26:13 +0000 (16:26 -0400)]
Attachments now download with the appropriate filename.
This was accomplished by disregarding any REST components to the right of
the part number, allowing the filename to be placed there. The filename is
sanitized to prevent script injection.
Art Cancro [Tue, 19 Sep 2023 20:02:38 +0000 (16:02 -0400)]
view_mail.js: better display of attachment links; attachments are now working
Displaying each one as a link definitely makes it stand out from the message text.
Display the size of each attachment -- _(bytes) is already in the webcit-classic translations
Downloads are working, but the wrong file name is derived
Art Cancro [Tue, 5 Sep 2023 22:09:38 +0000 (18:09 -0400)]
textclient: don't prompt to change internet email addresses when deleting a user
The 'edit user' and 'delete user' workflows run through the same function since
the process of deleting a user simply edits them and changes their access level
to 0. Add a check for cmd==25 (edit user) before asking the user if they want
to change the email addresses.
Art Cancro [Tue, 5 Sep 2023 03:59:44 +0000 (23:59 -0400)]
Omit the warning about session scheduled for termination but not idle.
Something about this warning makes it reference a bad pointer and crash
during periods of extremely high load. I don't know why, but just leaving
it alone seems to fix the problem.
Art Cancro [Thu, 31 Aug 2023 04:03:53 +0000 (00:03 -0400)]
Rewrite of the indexer is complete!
No more search hooks. Modules can call each other now and that's a lot simpler.
We also eliminated the index cache, because it made things a lot more complex, and
a modern database is going to mmap most of the index as it gets used anyway.
Art Cancro [Sun, 27 Aug 2023 00:29:07 +0000 (20:29 -0400)]
loadtest.c: when deleting, always make sure we deleted 1 message.
If there are multiple loadtest processes running -- and that's really
the whole idea -- we will often try to delete a message that was already
deleted by another process. That's not an error condition, but it would
cause posts to outnumber deletes and the rooms would grow endlessly. So
if we didn't successfully delete something, we go back and try deleting
another one.
Fun fact: the algorithm used to decide which message to delete is the same
algorithm used in the 'fortune' program.
The use of the DB_RECOVER flag to dbenv->open() appears to do more than just try to
recover the environment upon startup. It also creates __db.00X files, which are
perhaps holding the environment??? In any case it seems to be more solid this way.
I am also removing the use of any "private" transactions, since they are no longer
needed. Operations which write to the database check to see if the thread's dedicated
transaction pointer is in effect, maintaining that transaction if it is, and creating
a transaction in the same pointer otherwise.
There is a "double free" bug somewhere in here and I'm still trying to figure out what
conditions cause it to happen.