Commit Graph

145 Commits

Author SHA1 Message Date
Clemens Zeidler
a4710c0d46 Move ServerConnection class from the IMAP add-on to libmail.so. This avoids to init SSL each time an IMAP add-on
is loaded. SMTP and POP still have this problem! TODO: use the ServerConnection class in these add-ons too.
This would also remove a lot of #ifdef SSL form these add-ons. Will not do it in the near future, feel free to fix it
...



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41840 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-30 21:36:06 +00:00
Clemens Zeidler
b58ab52cd6 SSL should be thread safe (right?) but SSL_library_init function and SSL_load_error_strings are not, or they should be called only once...
Remove extra ssl lock, there is already one in ssl.
This fixes #7574. I have seen this or a similar bug before and it was quit reproduceable, now it seems to be fixed.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41828 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-30 05:46:10 +00:00
Clemens Zeidler
45f20f8f91 Fix reading long lines in multiple bunches. Thanks pulkomandy for testing.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41651 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-22 08:49:31 +00:00
Clemens Zeidler
a647218ee5 Only delete fully downloaded messages on the server! Clean up a bit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41092 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-23 19:13:21 +00:00
Clemens Zeidler
6d9f904958 Take leave mail on server into account. Should fix #7400.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41091 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-23 02:02:20 +00:00
Clemens Zeidler
a64bd5649d Write MAIL:name, MAIL:thread and MAIL:account attribute. The account id is now stored in MAIL:account_id. This requires to re-download all mails to write the correct attribute (sorry).
Fixes #7375.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41062 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-21 09:13:12 +00:00
Clemens Zeidler
165991b56a When fetching the message body also fetch the flags in one go. For example, gmail does not send flag change updates. If a message is
marked as read by another client the haiku client at least updates the flags and mark it as read when fetching the body. Thats the way Opera is 
doing it.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41018 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-18 04:49:32 +00:00
Clemens Zeidler
dd64744e69 Check first if the QUOTA extension is available.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40979 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-16 20:24:13 +00:00
Clemens Zeidler
2e20611a4f Hacked in a "used storage on server" status string in the IMAP folder window.
The complete window need some love so do not complain at this stage, feel free to fix it, though :-) (Main problem is to add a cancel button to abort the folder fetch and show an error message, see #7258).



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40978 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-16 20:01:28 +00:00
Clemens Zeidler
86be65dc7a Disconnect connection if login failed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40976 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-16 19:46:01 +00:00
Clemens Zeidler
3f9320c6a2 Add a GetQuota command for the IMAP QUOTA extension.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40975 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-16 19:12:30 +00:00
Clemens Zeidler
f96f677b90 Fix ExtractBetweenBrackets. It was assumed that the string starts with a bracket, be a little bit more lenient now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40974 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-16 19:09:19 +00:00
Clemens Zeidler
21b9693bd2 Clear variables after free them. Don't leak fSSLBio. Should help a bit for #7365. Note: the IMAP ServerConnection should be reused for POP3 and SMTP.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40955 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-14 21:20:42 +00:00
Clemens Zeidler
e3beb7c047 Init ssl variables. Replace "/" in temporary filename. This should fix #7267.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40935 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-13 20:32:45 +00:00
Clemens Zeidler
f5753b4af0 Add debug output to debug #7267.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40920 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-11 20:17:10 +00:00
Clemens Zeidler
37f85698cf - Fix race condition when start watching a mailbox and directly afterwards stop watching it. A BLooper was not suitable to synchronise start and stop watching. Wait till the IDLE command is send before returning the SyncAndStartWatchingMailbox method now. That ensures that a later StopWatchingMailbox call find the maibox in an expected watching state.
There is one thread (BLooper) to handle new commands and one watcher thread which is just listening at the server port for updates. The race condition occurred for example when a sync/watching and a fetch body message are send to the looper. The sync message just triggered the IDLE command in the watcher thread. In the meantime the fetch body command send a DONE command, because the IDLE command has not be send at this time the watcher keeps watching. 

- fix int32 -> ssize_t thanks Axel and Stippi
- clean up



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40919 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-11 20:13:54 +00:00
Clemens Zeidler
8b254785bb The IDLE watching command is supposed to timeout after 29 min if nothing happens. Add an mechanism to not treat this timeout as an
error.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40894 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-10 01:31:33 +00:00
Clemens Zeidler
7aafe6e5e7 There could more then one message fetch failing, count them to notify the listener.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40892 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-09 22:22:36 +00:00
Clemens Zeidler
f686f2f564 Cleanup the ongoing commands when disconnect otherwise we wait for them forever the next time.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40891 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-09 22:18:27 +00:00
Clemens Zeidler
548402bb7c Close the status window again when an error occurred durring a message fetch.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40865 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-08 03:09:41 +00:00
Clemens Zeidler
13ee057787 Fix spelling, thanks Jérôme!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40835 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-06 09:41:11 +00:00
Clemens Zeidler
f5a2f7b79d Set progress after the body has been fetched. This fixes #7255.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40832 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-06 07:49:00 +00:00
Clemens Zeidler
8c018efae7 Add some check if we are still connected.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40831 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-06 07:42:20 +00:00
Clemens Zeidler
faad334022 Fix endless loop when try to logout and the connection is already lost.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40830 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-06 07:36:45 +00:00
Clemens Zeidler
8e4e1a2880 Reset status view when fetch failed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40752 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-01 03:19:15 +00:00
Clemens Zeidler
8209ab9c98 Hopefully handle cases when the connection to the server is lost. This should trigger a reconnect.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40748 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-28 23:16:57 +00:00
Clemens Zeidler
78e0108c39 google expunge all deleted flagged messages automatically but some server keep them and EXPUNGE has to be executed explicit. Add the infrastructure for expunge but don't use it for now. The problem is that with each expunge all messages are deleted and calling expunge each time when a mail is deleted would delete messages in a virtual trash folder on other clients. Have to think about how to deal with it first. So it might be that you delete a message and the message will be downloaded again when you sync the next time (but the message is flagged as deleted).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40736 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-28 08:27:23 +00:00
Clemens Zeidler
093a895c3f Very bad idea to not add kDeleted flagged mails to the message list since the position in the list is used as a message id. The result was that the server synced the wrong messages.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40735 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-28 06:44:37 +00:00
Clemens Zeidler
5b1fc2da98 Use the correct descriptor size.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40652 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-24 04:57:56 +00:00
Clemens Zeidler
73da57481b - Don't download messages flaged as deleted.
- Set watching variable when leaving the watching method.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40635 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-23 02:25:22 +00:00
Clemens Zeidler
4ee7dfd971 Write status attributes correctly again.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40604 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-21 23:10:19 +00:00
Clemens Zeidler
9967dfd924 - Extend MarkMailAsRead to take a flag not only a bool value. Write an additional MAIL:read attribute.
- Remove some hard coded paths.
- Catch failure of FindMessage correctly. Thanks Axel.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40593 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-21 07:24:29 +00:00
Clemens Zeidler
ba11c28b6b Fix crash in imap config view. Remove hard coded path.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40592 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-21 07:19:24 +00:00
Clemens Zeidler
ee1568cb41 Also add IMAP body fetch status message.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40576 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-20 08:15:24 +00:00
Clemens Zeidler
65598ac67b Fix POP3 fetch header status view.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40574 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-20 07:53:57 +00:00
Clemens Zeidler
7ab6cb9ac5 Copy sent mails to /boot/home/mail/sent. Hope that makes more clear if a mail should be send (in out folder) or already has be sent.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40570 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-20 03:54:28 +00:00
Clemens Zeidler
55db88b7f4 Fix POP3 mail status #7216.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40482 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-13 23:15:14 +00:00
Clemens Zeidler
ad5bef4500 Use quotation marks around mailbox names. Maybe fix #7214.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40481 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-13 22:23:08 +00:00
Clemens Zeidler
7c03514cad Initalize array for reading the uid string attribute. More cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40437 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-10 23:42:27 +00:00
Clemens Zeidler
a24bc8d9a3 Remove debug output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40435 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-10 21:48:18 +00:00
Clemens Zeidler
3d2622c790 Fix partial download limit. Cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40434 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-10 21:46:41 +00:00
Clemens Zeidler
079e5c8bc9 Use declarations form MailAddon.h.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40416 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-09 23:26:38 +00:00
Clemens Zeidler
a68750c1ac Fix spelling and potential deadlock.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40414 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-09 22:22:26 +00:00
Clemens Zeidler
b985151b34 At least in vmware it takes longer to read the local files then the remote list. Add a status message for that.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40413 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-09 22:17:54 +00:00
Clemens Zeidler
81d1d0e504 To sync the mailbox a thread is started which reads the local files while in the parent thread the id list from the server is fetched. To sync both threads a BLocker was used. BLocker does not block when locked from the same thread so use a semaphore now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40412 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-09 22:11:50 +00:00
Clemens Zeidler
294da6bff9 Belongs to the last commit, sorry.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40408 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-09 19:44:59 +00:00
Clemens Zeidler
37d898f0b6 Fix coding style. Thanks Jérôme!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40406 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-09 19:18:13 +00:00
Clemens Zeidler
2cec29dba0 Remove unused system_filters directory.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40400 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-09 01:55:00 +00:00
Clemens Zeidler
dc2577cf2d Map one or more server mailboxes two a local directory. All subscribed mailboxes are fetched automatically and populated under the root account folder. On startup the local copy is synced with the server, means all local changes are rejected. (We should think about store offline changes and apply them when online)
Also the read flags are synced with the server. This makes it easy to have the same mailbox state on different machines.

Messages could be deleted by delete them form the folder (not when moving them to trash) This maybe needs some more thoughts but its a save solution. One problem with moving it to trash is that you also want to have the option to restore it again. If it is a header only messages and you delete it from the server you lose the body part. Complete messages could theoretically be append to the mailbox again when restoring the mail form trash. Append is commented out though...

An solution for the delete problem would be to move the message to a trash folder on the server. Moving mails on the server is not implemented yet, though.

You can subscribe or unsubscribe to a mailbox using the imap pref panel. The settings are written to the server and are not stored locally.

Add some helper classes which could also be used for POP and SMTP:
ServerConnection: abstract ssl or socket connection
ConnectionReader (still a bit IMAP specific but could be easily separated IMHO): read complete lines or a bunch of data more efficient. Old implementation did it byte by byte, this class read data in bunches and buffer the left over for the next request...



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40399 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-09 01:54:18 +00:00
Clemens Zeidler
d26fee1afb Switch to the new MailProtocol and account API. Lot of other smaller adaption to the new mail server.
Remove button in the pref app removes the complete account because we don't have separate chains any more. The pref app stays a mess, needs some layout love! (I did it even look worse...)

The new account/mail settings classes know if they have been changed but the current pref panel does not use this feature very well. It always mark the settings as modified when the settings view is displayed or more precise when the settings view is detached from the pref window, this could be optimized. The according mail protocol is completely restarted when their settings changed.

Some system filters are now directly integrated in the mail protocols. Hopefully make things easier to understand.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40398 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-02-09 01:52:30 +00:00