mox/http
Mechiel Lukkien e943e0c65d
fix delay with propagating mailbox changes to other imap (idle) connections
when broadcasting a change, we would try to send the changes on a channel,
non-blocking. if we couldn't send (because there was no pending blocked
receive), we would wait until the potential receiver would explicitly request
the changes. however, the imap idle handler would not explicitly request the
changes, but do a receive on the changes channel. since there was no pending
blocked send on the channel, that receive would block. only when another event
would come in, would both the pending and the new changes be sent.

we now use a channel only for signaling there are pending changes. the channel
is buffered, so when broadcasting we can just set the signal by a non-blocking
send and continue with the next listener. the receiver will get the buffered
signal. it can then get the changes directly, but lock-protected.

found when looking at a missing/delayed new message notification in thunderbird
when two messages arrive immediately after each other. this doesn't fix that
problem though: it seems thunderbird just ignores imap untagged "exists"
messages (indicating a new message arrived) during the "uid fetch" command that
it issued after notifications from an "idle" command.
2023-07-23 15:28:37 +02:00
..
account.go move "link or copy" functionality to moxio 2023-07-23 12:15:29 +02:00
account.html the mbox export also contains all message flags, so fix the text along the export links 2023-03-29 21:21:43 +02:00
account_test.go implement storing non-system/well-known flags (keywords) for messages and mailboxes, with imap 2023-06-24 00:24:43 +02:00
accountapi.json make http(s) path for serving the account and admin pages configurable 2023-03-12 11:52:15 +01:00
admin.go move "link or copy" functionality to moxio 2023-07-23 12:15:29 +02:00
admin.html new feature: when delivering messages from the queue, make it possible to use a "transport" 2023-06-16 18:57:05 +02:00
admin_test.go implement storing non-system/well-known flags (keywords) for messages and mailboxes, with imap 2023-06-24 00:24:43 +02:00
adminapi.json new feature: when delivering messages from the queue, make it possible to use a "transport" 2023-06-16 18:57:05 +02:00
autoconf.go make it easier to run with existing webserver 2023-03-04 00:49:02 +01:00
autoconf_test.go mox! 2023-01-30 14:27:06 +01:00
import.go fix delay with propagating mailbox changes to other imap (idle) connections 2023-07-23 15:28:37 +02:00
mtasts.go add basic webserver that can do most of what i need 2023-02-28 22:19:24 +01:00
mtasts_test.go mox! 2023-01-30 14:27:06 +01:00
web.go fix progress reporting during import through the accounts web page 2023-07-05 12:54:24 +02:00
web_test.go unbreak the subcommands that talk to the mox instance of the ctl socket 2023-06-16 13:27:27 +02:00
webserver.go in websocket data copying code, wait for other goroutine to stop before changing the connection 2023-06-24 00:14:14 +02:00
webserver_test.go unbreak the subcommands that talk to the mox instance of the ctl socket 2023-06-16 13:27:27 +02:00