aboutsummaryrefslogtreecommitdiff
path: root/worker
AgeCommit message (Collapse)Author
2019-05-14Implement :copy (aka :cp)Drew DeVault
2019-05-13Handle external message deletionsDrew DeVault
2019-05-13Handle incoming emails gracefullyDrew DeVault
2019-04-29worker/imap: use the IMAP connection from a single goroutineSimon Ser
Unfortunately, the IMAP protocol hasn't been designed to be used from multiple goroutines at the same time. For instance, if you fetch twice the same message from two different goroutines, it's not possible to tell whether the response is for one receiver or the other. For this reason, go-imap clients aren't safe to use from multiple goroutines. This commit changes the IMAP workers to be synchronous again (a command is executed only after the previous one has completed). To use IMAP from different threads, popular clients (e.g. Thunderbird) typically open multiple connections.
2019-04-27worker/types: fix Worker.Callbacks race conditionSimon Ser
Worker.Process* functions were called in different goroutines than Worker.Post*. Protect the map with a mutex. Also make the map unexported to prevent external unprotected accesses. Worker.Process* functions used to delete items from the map. However they didn't delete the element they retrieved: callbacks[msg.InResponseTo()] was read while callbacks[msg] was deleted. I'm not sure I understand why. I tried to delete the element that was accessed - but this broke everything (UI froze at "Connecting..."). I don't believe any elements were actually removed from the map, so the new code just doesn't remove anything.
2019-03-31Make message viewer real, part twoDrew DeVault
2019-03-31Rename FetchMessageBodies to FetchFullMessagesDrew DeVault
2019-03-31Make the message viewer real, part oneDrew DeVault
2019-03-31Don't parse mail in worker; send a reader insteadDrew DeVault
2019-03-31Pull BodyStructure up from IMAP workerDrew DeVault
2019-03-29Add body fetching support codeDrew DeVault
2019-03-20Implement :delete-messageDrew DeVault
2019-03-14Display message subjects in message listDrew DeVault
2019-03-14Implement message store side of message fetchingDrew DeVault
2019-03-10Fetch valid UIDs from server after opening dirDrew DeVault
2019-01-13Add loading spinnerDrew DeVault
2019-01-13Add name to DirectoryInfo messagesDrew DeVault
2019-01-13Issue IMAP SELECT commandDrew DeVault
2018-06-12Apply gofmtDrew DeVault
2018-06-12fallthrough in worker selectionMarkus Ongyerth
2018-02-02Tidy up list.goDrew DeVault
2018-02-01Refactoring; consume listing responseDrew DeVault
2018-02-01Implement (most of) mailbox listingDrew DeVault
2018-02-01Improve loggingDrew DeVault
2018-02-01Reduce boilerplate in worker/UIDrew DeVault
2018-01-31Add certificate approval flowDrew DeVault
2018-01-31Improve loggingDrew DeVault
2018-01-14Connect to IMAP server, login and idleemersion
2018-01-11Move worker into account tabDrew DeVault
2018-01-10Renderer scaffoldingDrew DeVault
2018-01-10Misc idiomatic fixesemersion
2018-01-10Sleep main and worker loops on idleDrew DeVault
2018-01-09Parse account configurationDrew DeVault
2018-01-09Initial pass on worker/UI message passingDrew DeVault