Commit Graph

11 Commits

Author SHA1 Message Date
5120d7098b Change "gboolean connected" to "CamelServiceConnectionStatus status",
* camel-service.c: Change "gboolean connected" to
	"CamelServiceConnectionStatus status", which can be disconnected,
	connecting, connected, or disconnecting.
	(camel_service_init, camel_service_finalize): create/destroy the
	connect_op_lock. Refer to service->status rather than
	service->connected.
	(camel_service_connect): When connecting, note the current
	operation (and create a new one if there's none registered) and
	mark the connection "connecting" until we succeed or fail.
	(camel_service_disconnect): Likewise in reverse.
	(camel_service_cancel_connect): New function to cancel a
	connection attempt.
	(cancel_connect): Default implementation: Call
	camel_operation_cancel on the connect_op.

	* camel-disco-store.c (disco_connect): Only call
	CamelRemoteStore's connect func if we're online.
	(disco_cancel_connect): Fall back to offline if a connection gets
	cancelled.
	(disco_get_folder_info): Kludge: call connect explicitly before
	deciding whether to do the online or offline version, so if the
	connect fails, we fall back correctly.

	* camel-session.c (camel_session_get_service_connected):
	s/svc->connected/svc->status/

	* camel-remote-store.c (camel_remote_store_finalise):
	Change service->connected check to service->status check.
	(remote_connect): Don't set service->connected here:
	camel_service_connect() itself does that.

	* camel-operation.c (camel_operation_registered): Deal with the
	possibility that there's no registered op.

svn path=/trunk/; revision=13191
2001-09-27 14:39:39 +00:00
6
88186e014e Emptied VeeStorePrivate, member wasn't used.
2001-09-26    <NotZed@Ximian.com>

        * camel-vee-store.c: Emptied VeeStorePrivate, member wasn't used.

        * camel-vee-folder.c (camel_vee_folder_set_expression): Lock
        changed list separately.
        (camel_vee_folder_remove_folder): "
        (camel_vee_folder_set_folders): Use changed_lock for changed list.
        (vee_refresh_info): Use changed_lock, also just grab the list,
        reset it in the lock, and do the work unlocked.
        (vee_sync): Use changed lock for changed list.
        (folder_changed): ".  All this kills a deadlock with sync/expunge.

        * camel-private.h (CamelVeeFolderPrivate): Added a new lock for
        the folders-changed list.
        (CamelVeeStorePrivate): Removed, defined in camel-vee-store.c,
        thanks to a pedantic.

svn path=/trunk/; revision=13163
2001-09-26 20:18:54 +00:00
1
0f0f01c1e0 Force a refresh of vfolders before storing their count. This essentially
2001-09-21    <NotZed@Ximian.com>

        * camel-vee-store.c (vee_get_folder_info): Force a refresh of
        vfolders before storing their count.  This essentially makes
        'get_folderinfo' refresh all vfolders, so that get-mail works as
        expected.

        * camel-vee-folder.c (camel_vee_folder_finalise): Clear lists.
        (folder_changed): If we're not autoupdating the folder, then
        add this folder to the list of 'changed' folders for this vfolder.
        (camel_vee_folder_set_expression): Reset the folders_changed list.
        (camel_vee_folder_remove_folder): Remove the folder from the
        folders_changed list.
        (camel_vee_folder_set_folders): If we have a folder already, but
        its changed, use this opportunity to update it.
        (vee_sync): Remove any synced folders from the folders_changed
        list.
        (vee_refresh_info): Refresh folder, re-run queries on any changed
        folders.

svn path=/trunk/; revision=13045
2001-09-21 05:58:53 +00:00
8
8347ce1403 If filter inbox is set on the store, and we're opening inbox '', then
2001-09-18    <NotZed@Ximian.com>

	* providers/local/camel-maildir-folder.c
	(camel_maildir_folder_new): If filter inbox is set on the store,
	and we're opening inbox '', then enable filtering on new messages.

	* providers/local/camel-local-folder.c
	(camel_local_folder_construct): After loading the summary, check
	it, and only abort if that fails.  Also maintain the changes
	count.

	* providers/local/camel-local-summary.c
	(camel_local_summary_load): Remove summary_check code from here.
	(camel_local_summary_check): Sync index/summary here, if we were
	successful.

	* providers/local/camel-spool-folder.c
	(camel_spool_folder_new): If we have filter-new-messages-on-inbox
	set and we just opened inbox, turn on filtering on this folder.
	(camel_spool_folder_construct): Keep track of changes for the
	folder, so that filter-new-messages works right (?)

	* providers/local/camel-spool-store.c (get_folder): Pass 'INBOX'
	as the folder name, not the path.

	* camel-folder-search.c (search_not): Modified patch from
	<peterw@ximian.com> since the summary is messageinfo's, not
	strings.

	** Ok so the problem with the stuff below is that maildir/spool
	'summary_load' throws away all events, including recents, joy eh?

	* providers/local/camel-maildir-summary.c (maildir_summary_check):
	Add new messages to the recent changeinfo.

	* providers/local/camel-spool-summary.c: Mark 'new' message as
	recent, for later processing if required (i.e. 'filter new
	messages').

	* camel-store.c (construct): new function, cascade up construct
	method and check for 'filter' param, and set accordingly for any
	one that might want it.

	* providers/imap/camel-imap-store.c (construct): map the
	param_filter_inbox flag to the store->flags as
	CAMEL_STORE_FILTER_INBOX.

	* camel-store.h (CAMEL_STORE_FILTER_INBOX): new flag to tell it to
	filter inbox.

	* providers/imap/camel-imap-folder.h: Removed do_filtering flag
	from CamelImapFolder.

	* providers/imap/camel-imap-folder.c (imap_update_summary): Remove
	the 'recents' parameter, use the 'changes' parameter instead to
	convey this info.
	(camel_imap_folder_changed): Changed for update_summary api
	change.  Now always just emit the changed event if we have any
	changes to report, filtering code removed, handled upstream.
	(filter_proc):
	(filter_free): Removed old filtering code.
	(camel_imap_folder_new): Set the filter_recent flag on the folder
	if we're the inbox and filtering of inbox is enabled.

	* camel-folder.c (folder_changed): If we have 'recent' messages,
	and are set to filter recents, then freeze the folder and launch a
	thread to do the processing (or similar if threading not enabled).
	(thaw): Make sure we emit the changed signal outside of owning the
	lock and if things have changed.  Also, no longer bother
	downgrading folder_changed events to message_changed events.

	* camel-folder.h (struct _CamelFolder): Added filter_recent flag
	-> signifies all recent messages in folder should be filtered.

	* camel-session.c: (camel_session_thread_msg_new,
	camel_session_thread_msg_free, camel_session_thread_queue,
	camel_session_thread_wait): code to handle async operations as
	part of camel processing.
	(camel_session_finalise): free thread_lock, destroy thread, active
	hash, etc.
	(camel_session_init): init thread, active hash, etc.
	(camel_session_class_init): Init virtual functions.
	(session_thread_msg_new, session_thread_msg_free,
	session_thread_destroy, session_thread_received,
	session_thread_queue, session_thread_wait): default implementation
	of session threads stuff.

2001-09-17    <NotZed@Ximian.com>

	* camel-folder.c (camel_folder_change_info_recent_uid): New
	function to add a 'recent' uid to the change info.
	(camel_folder_change_info_clear): Clear recent list.
	(camel_folder_change_info_free): Free recent list.
	(camel_folder_change_info_new): Setup recent list.

	* camel-folder.h: Added a uid_recent item to the folder_changed
	event data.

	* providers/local/camel-maildir-store.c (scan_dir): Free new in
	the right block.

	* providers/local/camel-local-provider.c: Add local config entries
	to filter on new messages in spool and maildir provider.

	* camel-vee-folder.c (vee_folder_construct): Remove the assertion
	which stops ? in names from being allowed.

svn path=/trunk/; revision=12956
2001-09-18 21:43:00 +00:00
6f22eb642b Slightly re-arranged filter/change notification logic. If we;re filtering,
2001-08-01  Not Zed  <NotZed@Ximian.com>

	* providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
	Slightly re-arranged filter/change notification logic.  If we;re
	filtering, freeze the folder till we're finished to smooth the ui
	for new mail.

2001-07-31  Not Zed  <NotZed@Ximian.com>

	* camel-folder.c (camel_folder_init): Chagned mutexes to
	e_mutexes, folder lock recursive.  This fixes the imap filtering
	bug, or at least some cases of it.
	(camel_folder_finalize): Free mutexes.

	* camel-private.h (CamelFolderPrivate): Changed mutexes to
	e_mutexes.

2001-07-25  Not Zed  <NotZed@Ximian.com>

	* camel-folder.c (camel_folder_change_info_*): Change the
	return if fail's into asserts.
	(camel_folder_change_info_free): Don't let it accept a NULL
	argument.  This isn't g_lib so we dont have to.

svn path=/trunk/; revision=11537
2001-08-01 04:57:01 +00:00
3797918d01 Initialize the private send_lock. (camel_transport_finalize): Free the
2001-06-27  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-transport.c (camel_transport_init): Initialize the private
	send_lock.
	(camel_transport_finalize): Free the private send_lock.
	(camel_transport_get_type): Set the init and finalize functions.
	(camel_transport_send): Lock the transport.
	(camel_transport_send_to): Same.

	* camel-private.h: Add CAMEL_TRANSPORT_(UN)LOCK macros.

svn path=/trunk/; revision=10547
2001-06-27 22:43:00 +00:00
91cc026904 Update the copyrights, replacing Helix Code with Ximian and
helixcode.com with ximian.com all over the place.

svn path=/trunk/; revision=10440
2001-06-23 08:52:02 +00:00
76b2ad6623 Same.
2001-03-16  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-private.h: Same.

	* camel-remote-store.h: Fixed #include to use <>'s instead of ""'s

svn path=/trunk/; revision=8767
2001-03-17 00:52:11 +00:00
0e9c0268a8 re-constify inbuf, to remove a warning.
2001-03-14  Not Zed  <NotZed@Ximian.com>

	* camel-mime-filter-charset.c (filter, complete): re-constify
	inbuf, to remove a warning.

	* camel-mime-parser.c (folder_scan_step): When we're out of data,
	run the filter_complete.  For some reason the logic that was there
	was never being run, always try it now, i think it was to work
	around a buggy filter, rather than fix it the right way.

	* camel-folder-summary.c (summary_build_content_info): If indexing
	html parts, use the html filter to convert it to some indexable
	format.
	(summary_build_content_info): Reset the filters before adding them
	back to the stream, if they get re-used in a given instance
	(likely).

	* Makefile.am (libcamelinclude_HEADERS): Added
	camel-mime-filter-html.[ch].
	(INCLUDES): Added xml clags

2001-03-05  Not Zed  <NotZed@Ximian.com>

	* camel-folder-search.c (camel_folder_search_class_init): Setup a
	new function, "uid" which matches uids.
	(search_uid): Implement the "match uid" command.

svn path=/trunk/; revision=8705
2001-03-14 07:06:54 +00:00
c81bce50bb Removed all files.
2001-02-22  Not Zed  <NotZed@Ximian.com>

        * providers/vee/*: Removed all files.

        * camel-private.h: Move camel-vee-private.h stuff into here.

        * camel-session.c: Move the vee_provider here, and initialise it
        always as part of a session.  The vfolder provider is always
        available.

        * providers/Makefile.am: Remove "vee" from the build list, now
        built as part of the main library.

        * Makefile.am (libcamelinclude_HEADERS):
        (libcamel_la_SOURCES): Added camel-vee-store.[ch],
        camel-vee-folder.[ch].

svn path=/trunk/; revision=8340
2001-02-21 20:30:29 +00:00
6de256c2a2 Lock the command channel while searching. (imap_body_contains): If
2000-12-24  Not Zed  <NotZed@HelixCode.com>

        * providers/imap/camel-imap-search.c (imap_body_contains): Lock
        the command channel while searching.
        (imap_body_contains): If performing a whole uid search, then add
        references to our own summary items, dont look it up in the
        folder.  This way they can't vanish unexpectedly.

        * providers/imap/camel-imap-folder.h (CamelImapFolder): Added a
        private field.

        * providers/imap/camel-imap-private.h: Added lock for imap
        searches.

        * Merge from camel-mt-branch.

        * providers/imap/camel-imap-folder.c (imap_update_summary): Merge
        fix, use the folder->summary.
        (imap_get_message_flags, imap_set_message_flags,
        imap_get_message_user_flag, imap_set_message_user_flag): Removed
        again.
        (camel_imap_folder_init): Setup private data/lock.
        (imap_finalize): Free private data/search lock.
        (imap_search_free): Lock the search_lock.
        (imap_search_by_expression): Lock the search lock when using the
        search object.  Also copy/ref hte summary, rather than getting it
        directly.
        (imap_refresh_info): Free any info lookups.  Use folder->summary
        not imap_folder->summary.  And lock around commands.

svn path=/trunk/; revision=7150
2000-12-24 00:46:20 +00:00