aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers
Commit message (Collapse)AuthorAgeFilesLines
...
* camel_pop3_engine_iterate doesn't return the state, it returns -1 on fail,Jeffrey Stedfast2002-05-081-7/+7
| | | | | | | | | | | | 2002-05-08 Jeffrey Stedfast <fejj@ximian.com> * providers/pop3/camel-pop3-store.c (pop3_try_authenticate): camel_pop3_engine_iterate doesn't return the state, it returns -1 on fail, 0 when finished processing request or >0 if more ops are in the queue, so don't check status against CAMEL_POP3_STATE_OK, instead check pcp->state against that. svn path=/trunk/; revision=16719
* Check for LOGIN xxxx as well if debug is on, so we dont print passwords toNot Zed2002-05-0715-30/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2002-05-07 Not Zed <NotZed@Ximian.com> * camel-remote-store.c (remote_send_string): Check for LOGIN xxxx as well if debug is on, so we dont print passwords to evolution logs. * providers/imap/camel-imap-utils.c (imap_is_atom_char): This was really broken. 1. isprint() is locale dependent, and 2. it looked up an 8 bit value in a 7 bit table without truncating it. I've removed the isprint() stuff and just put it directly into the special table, which i've expanded to the right size too. * providers/imap/*: Applied patch from Preston Elder <prez@magick.tm> to make camel only use literals if it needs to for simple strings. Changed slightly to use imap_is_atom() and more consistent formatting. providers/imap/camel-imap-utils.c (imap_is_atom): Chagned from imap_needs_quoting(). ** Merged in camel-object2 branch. Simpler camelobject implementation + object args interface. * camel.c (camel_init): Call camel_object_get_type() to make sure camel_object_type is initialised. * camel-object.h (CAMEL_OBJECT_TYPE): Changed to return global camel_object_type pointer, not call camel_object_get_type. svn path=/trunk/; revision=16701
* If the pop3 command status is -1, then we probably have a TCP error (?) soJeffrey Stedfast2002-05-072-15/+22
| | | | | | | | | | | | | 2002-05-06 Jeffrey Stedfast <fejj@ximian.com> * providers/pop3/camel-pop3-store.c (pop3_try_authenticate): If the pop3 command status is -1, then we probably have a TCP error (?) so set a SYSTEM exception so our caller can distinguish between a "bad password" and a "tcp error". (pop3_connect): Only uncache the password on "bad password" errors. svn path=/trunk/; revision=16700
* Call camel_mime_message_encode_8bit_parts() which fixes bug #10885.Jeffrey Stedfast2002-05-071-3/+1
| | | | | | | | | 2002-05-06 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (do_append): Call camel_mime_message_encode_8bit_parts() which fixes bug #10885. svn path=/trunk/; revision=16698
* We want to set unread_count to get_unread_message_count, notNot Zed2002-04-291-2/+1
| | | | | | | | | | | 2002-04-29 Not Zed <NotZed@Ximian.com> * providers/local/camel-spool-store.c (get_folder_info): We want to set unread_count to get_unread_message_count, not get_message_count(). Might fix #17174. Also removed FIXME: as it was fixed. svn path=/trunk/; revision=16629
* Don't link to libibex.a anymore.Jeffrey Stedfast2002-04-273-4/+1
| | | | | | | | | | | | 2002-04-26 Jeffrey Stedfast <fejj@ximian.com> * providers/local/Makefile.am: Don't link to libibex.a anymore. * providers/nntp/Makefile.am: Same. * providers/imap/Makefile.am: And again here. svn path=/trunk/; revision=16609
* Don't put a space between the "RCPT TO:" and the "<recipient>" strings -Jeffrey Stedfast2002-04-261-5/+3
| | | | | | | | | | | | 2002-04-25 Jeffrey Stedfast <fejj@ximian.com> * providers/smtp/camel-smtp-transport.c (smtp_rcpt): Don't put a space between the "RCPT TO:" and the "<recipient>" strings - rfc0821 was not clear on this but it seems rfc2821 defines a grammar excluding that SP. (smtp_mail): Same. svn path=/trunk/; revision=16588
* Configure the default paths for mh, mbox, maildir, spools, etc.Jeffrey Stedfast2002-04-251-15/+52
| | | | | | | | | | | | | 2002-04-24 Jeffrey Stedfast <fejj@ximian.com> * providers/local/camel-local-provider.c (camel_provider_module_init): Configure the default paths for mh, mbox, maildir, spools, etc. * camel-provider.h: Add a CAMEL_PROVIDER_CONF_LABEL enum and define some default CamelProviderConfEntry macros. svn path=/trunk/; revision=16580
* Free the LIST pop3 command.Jeffrey Stedfast2002-04-201-2/+4
| | | | | | | | | | | 2002-04-19 Jeffrey Stedfast <fejj@ximian.com> * providers/pop3/camel-pop3-folder.c (pop3_refresh_info): Free the LIST pop3 command. * camel-data-cache.c (data_cache_finalise): Free the cdc->path. svn path=/trunk/; revision=16550
* If we get a failure, make sure we set an exception.Not Zed2002-04-181-2/+6
| | | | | | | | | | | | | | 2002-04-18 Not Zed <NotZed@Ximian.com> * providers/local/camel-local-store.c (rename_folder): If we get a failure, make sure we set an exception. * camel-text-index.c (camel_text_index_rename): If the file doesn't exist, just assume it never did, dont return failure. (text_index_rename): Add '.index' to the path name we're using, since we dont get it passed in. svn path=/trunk/; revision=16505
* When doing a contains match, split the words and perform an and on it.Not Zed2002-04-183-5/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2002-04-18 Not Zed <NotZed@Ximian.com> * camel-folder-search.c (check_header): When doing a contains match, split the words and perform an and on it. (match_words_messages): If we have an index, but were forced to do a full search, first lookup a subset of messages using the index and a simplified word set. Only do a manual search of this subset. 2002-04-17 Not Zed <NotZed@Ximian.com> * camel-folder-search.c (match_message_index): Changed to take a utf8 string not a regex pattern. (match_words_index): Matches against a camel_search_words list. (match_words_1message): Matches a single message against a camel_search_words list. (match_words_message): Same, but gets the message from the folder for you. (match_words_messages): Matches a list of messages against a words list. (search_body_contains): Rewritten to handle multiple word searches. For #23371. * providers/imap/camel-imap-search.c (sync_match): Split words when searching, to support multiple search words. Also, try searching specifying charset of utf8 if we can, if that fails, fall back to not specifying charset. TODO: It should translate the strings into the locale default charset? * providers/imap/camel-imap-store.c (connect_to_server): Added new cap - utf8_search, if set, we tell the server we're searching using utf8, otherwise we dont (incorrectly, since we always use utf8 to search). * camel-search-private.c (camel_ustrstrcase): Make this class public. (camel_search_words_split): Split a word into multiple words based on whitespace, and keep track of whether the word is simple (indexable directly), or not. (camel_search_words_free): Free 'em. svn path=/trunk/; revision=16501
* Get rid of an unused variable.Jeffrey Stedfast2002-04-171-6/+12
| | | | | | | | | | | | | | | | | | | 2002-04-16 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_folder): Get rid of an unused variable. * providers/smtp/camel-smtp-transport.c (smtp_helo): Use camel_gethostbyaddr since gethostbyaddr is not reentrant. * camel-http-stream.c (http_connect): Updated after the rename of camel_get_host_byname. * camel-service.c (camel_gethostbyname): Renamed. (camel_gethostbyaddr): New cancellable/reentrant version of gethostbyaddr. svn path=/trunk/; revision=16484
* Added #include <sys/types.h> for dirent.h which needs it on MacOS X.Jeffrey Stedfast2002-04-154-1/+8
| | | | | | | | | | | | | | | | | | | 2002-04-14 Jeffrey Stedfast <fejj@ximian.com> * providers/local/camel-spoold-store.c: Added #include <sys/types.h> for dirent.h which needs it on MacOS X. * providers/local/camel-maildir-store.c: Same. * providers/nntp/camel-nntp-store.c: Same. * providers/imap/camel-imap-message-cache.c: Same. * camel-provider.c: Same. * camel-data-cache.c: Same. svn path=/trunk/; revision=16466
* fix the nntp provider makefile.amJeffrey Stedfast2002-04-141-18/+3
| | | | svn path=/trunk/; revision=16460
* If the last message(s) were deleted, and we had any messages output,Not Zed2002-04-112-1/+8
| | | | | | | | | | | | | | | | | 2002-04-11 Not Zed <NotZed@Ximian.com> * providers/local/camel-spool-summary.c (spool_summary_sync_full): If the last message(s) were deleted, and we had any messages output, account for the lost \n of the following From line by adding an extra \n. fix for #8214. 2002-04-10 Not Zed <NotZed@Ximian.com> * camel-mime-part-utils.c (convert_buffer): If we get a 0 length input, return a 0 lenght output as valid - fixes bugs with some iconv impl and its simpler anyway. svn path=/trunk/; revision=16438
* Set the UID_SET_LIMIT value to 4096. I ran into an issue tonight whereJeffrey Stedfast2002-04-111-1/+3
| | | | | | | | | | | | | | | 2002-04-11 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c: Set the UID_SET_LIMIT value to 4096. I ran into an issue tonight where apparently the IMAP server changed the UIDVALIDITY and so Evo needed to re-fetch all headers and it was trying to send a uid set of some 25k (yes, I have a very large INBOX). Anyways, it was set to unlimited before. Courier IMAPd can safely handle up to ~16k per token, but UW IMAPd can only handle 8k per command-line, so I set it to 4k just to be safe. svn path=/trunk/; revision=16436
* If (body-contains) is not passed any arguments, return empty/false. FixesNot Zed2002-04-051-1/+1
| | | | | | | | | | 2002-04-04 Not Zed <NotZed@Ximian.com> * providers/imap/camel-imap-search.c (imap_body_contains): If (body-contains) is not passed any arguments, return empty/false. Fixes a crash exposed by #15001. svn path=/trunk/; revision=16362
* make service_cache be an array of CAMEL_NUM_PROVIDER_TYPES elements so youDan Winship2002-04-046-10/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * camel-provider.h (CamelProvider): make service_cache be an array of CAMEL_NUM_PROVIDER_TYPES elements so you can have a single provider offer both stores and transports. (Eg, Exchange, NNTP) * providers/imap/camel-imap-provider.c: Don't initialize service_cache here. (The session code can do it itself since the url_hash and url_equal functions are stored as part of the provider.) * providers/nntp/camel-nntp-provider.c: Likewise. * providers/local/camel-local-provider.c: Likewise. * providers/pop3/camel-pop3-provider.c: Likewise. * providers/sendmail/camel-sendmail-provider.c: Likewise. * providers/smtp/camel-smtp-provider.c: Likewise. * camel-session.c (register_provider): Initialize the provider's service cache(s) here. (camel_session_class_init): Don't initialize. vee_provider.service_cache here. (camel_session_destroy_provider): Update to destroy multiple service_caches. (service_cache_remove, get_service): Tweak these a bit to deal with multiple service_caches. svn path=/trunk/; revision=16330
* Turn indexing back on, fingers crossed ...Not Zed2002-04-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | 2002-04-03 Not Zed <NotZed@Ximian.com> * providers/local/camel-local-folder.c (camel_local_folder_construct): Turn indexing back on, fingers crossed ... * camel-block-file.c (sync_nolock): #!@$@$#@~#$ DF@#$!Q@$#!@$#!#%. Well it helps if we're iterating a list to iterate the node pointer ... * camel-text-index.c (text_index_sync): Sync the key tables explcitly. (text_index_sync): Debug out frag info. (camel_text_index_dump): Added a (rather large, but optional) raw dumping mode for debugging purposes. * camel-partition-table.c (camel_key_table_finalise): Sync root block when done. svn path=/trunk/; revision=16329
* Put back in the exception setup stuff i disabled for debugging.Not Zed2002-04-021-4/+3
| | | | | | | | | 2002-04-02 Not Zed <NotZed@Ximian.com> * providers/imap/camel-imap-store.c (imap_keepalive): Put back in the exception setup stuff i disabled for debugging. svn path=/trunk/; revision=16320
* Temporarily disable indexing.Not Zed2002-04-025-13/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2002-04-02 Not Zed <NotZed@Ximian.com> * providers/local/camel-local-folder.c (camel_local_folder_construct): Temporarily disable indexing. 2002-03-28 Not Zed <NotZed@Ximian.com> * camel-partition-table.c (camel_key_table_lookup): Change range checking assert to a warning. * providers/pop3/camel-pop3-folder.c (pop3_finalize): Make sure we flush out all outstanding commands before finalising, stops being finalised while outsanding requests are processed by the store finalise. (pop3_get_message): Instead of pre-fetching all messages, just pre-fetch a maxiumum number at any one time, stops us running out of cache fd's. * providers/nntp/camel-nntp-folder.c (nntp_folder_init/finalise): Setup priv data + locks, & free. * providers/imap/camel-imap-folder.c (imap_rescan): Batch all message_chagned events into a single folder_changed event (otherwise updates can be >>> expensive, like >5 hours for 80K messages changing!). Alternately it could use folder freeze/unfreeze perhaps. 2002-03-27 Not Zed <NotZed@Ximian.com> * providers/imap/camel-imap-store.c (imap_keepalive): Pass an exception to called code so it behaves properly since it uses the passed exception to check returns. svn path=/trunk/; revision=16319
* Use -avoid-version instead of -version-info 0:0:0, and specify -module.Dan Winship2002-04-026-7/+6
| | | | | | | | | | | | | | | | | | | | | * providers/imap/Makefile.am (libcamelimap_la_LDFLAGS): Use -avoid-version instead of -version-info 0:0:0, and specify -module. (From Max Horn <max@quendi.de>). * providers/local/Makefile.am (libcamellocal_la_LDFLAGS): Likewise. * providers/nntp/Makefile.am (libcamelnntp_la_LDFLAGS): Likewise. * providers/sendmail/Makefile.am (libcamelsendmail_la_LDFLAGS): Likewise. * providers/smtp/Makefile.am (libcamelsmtp_la_LDFLAGS): Likewise. * providers/pop3/Makefile.am (libcamelpop3_la_LDFLAGS): Likewise. Also remove $(KRB4_LDFLAGS) since KPOP is gone. (INCLUDES): and $(KRB4_CFLAGS) svn path=/trunk/; revision=16305
* Change the message arg to a CamelMimeMessage instead of a CamelMedium.Dan Winship2002-03-292-136/+39
| | | | | | | | | | | | | | | | | | | | | | | * camel-transport.c (camel_transport_send_to): Change the message arg to a CamelMimeMessage instead of a CamelMedium. Even the NNTP provider returns CamelMimeMessages, and we're never going to support anything more exotic than that. Also do a few more g_return_if_fails here instead of in the providers. (camel_transport_can_send): No longer needed. (camel_transport_send): Remove this too. It wasn't being used any more, and it doesn't behave exactly the same in sendmail and smtp. * providers/smtp/camel-smtp-transport.c (smtp_send, smtp_can_send): Gone. (smtp_send_to): Update for arg change. (smtp_data): Make this take a CamelMimeMessage too. * providers/sendmail/camel-sendmail-transport.c (sendmail_send, sendmail_can_send): Gone. (sendmail_send_to): Update for arg change, and merge in the part that used to be shared with sendmail_send. svn path=/trunk/; revision=16278
* When we add a new name, up all of the cache limits, because we're probablyNot Zed2002-03-2519-58/+120
| | | | | | | | | | | | | | | | | | | 2002-03-25 Not Zed <NotZed@Ximian.com> * camel-text-index.c (text_index_add_name): When we add a new name, up all of the cache limits, because we're probably going to be adding more. (text_index_sync): Drop the cache limits back down again, we dont need them when looking words up. ** MERGE camel_index branch. * camel-text-index.[ch]: Added files i forgot to add (eep nearly lost all this work!) * camel-block-file.c (sync_nolock): Fix an infinite loop in syncing. svn path=/trunk/; revision=16242
* Updated to use the same logic as the POP code.Jeffrey Stedfast2002-03-191-8/+5
| | | | | | | | | | 2002-03-18 Jeffrey Stedfast <fejj@ximian.com> * providers/smtp/camel-smtp-transport.c (connect_to_server_wrapper): Updated to use the same logic as the POP code. svn path=/trunk/; revision=16203
* No longer takes a stls_supported argument since we no longer need it withJeffrey Stedfast2002-03-191-16/+9
| | | | | | | | | | | | | | 2002-03-18 Jeffrey Stedfast <fejj@ximian.com> * providers/pop3/camel-pop3-store.c (connect_to_server): No longer takes a stls_supported argument since we no longer need it with the new logic. (connect_to_server_wrapper): New logic: First try connecting to the SSL port (995 by default), if that fails with SERVICE_UNAVAILABLE, then we attempt to connect (to port 110 by default) and try to use STARTTLS. svn path=/trunk/; revision=16202
* Added a work-around for SMTP servers that can't read the RFCs and thusJeffrey Stedfast2002-03-141-1/+17
| | | | | | | | | | | 2002-03-13 Jeffrey Stedfast <fejj@ximian.com> * providers/smtp/camel-smtp-transport.c (smtp_auth): Added a work-around for SMTP servers that can't read the RFCs and thus implement SASL incorrectly. Oh well, that's life in the world of mail clients I guess. svn path=/trunk/; revision=16152
* reverted my USER/PASS quoting fixJeffrey Stedfast2002-03-141-2/+2
| | | | svn path=/trunk/; revision=16148
* Quote the USER and PASS arguments since some people have spaces in theirJeffrey Stedfast2002-03-141-2/+2
| | | | | | | | | | 2002-03-13 Jeffrey Stedfast <fejj@ximian.com> * providers/pop3/camel-pop3-store.c (pop3_try_authenticate): Quote the USER and PASS arguments since some people have spaces in their user-names and/or passwords. svn path=/trunk/; revision=16144
* oops, musta backspaced over a brace?Jeffrey Stedfast2002-03-121-1/+1
| | | | svn path=/trunk/; revision=16098
* These fixes should fix bug #21737.Jeffrey Stedfast2002-03-122-17/+20
| | | | | | | | | | | | | | | | 2002-03-11 Jeffrey Stedfast <fejj@ximian.com> These fixes should fix bug #21737. * providers/smtp/camel-smtp-transport.c (connect_to_server_wrapper): Same as with the POP code. * providers/pop3/camel-pop3-store.c (connect_to_server_wrapper): Slight restructuring of the if-statements for the USE_SSL_ALWAYS case so that we can't possibly return TRUE unless we really did connect successfully. svn path=/trunk/; revision=16097
* Rename the OpenSSL implementation of things to match the NSSDan Winship2002-03-112-54/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | implementation so that callers don't need to care which one is being used. * camel-tcp-stream-openssl.c: Implement CamelTcpStreamSSL, not CamelTcpStreamOpenSSL. Rename methods as well. Replace the camel-tcp-stream-openssl.h include with camel-tcp-stream-ssl.h. * camel-tcp-stream-openssl.h: Gone. * camel-tcp-stream-ssl.c: Add a note explaining that this implementation is only used for NSS, and that OpenSSL's implementation is in another file. (Should probably do some CVS renaming magic at some point.) * camel-http-stream.c (http_connect): Remove OpenSSL refs; the previously-NSS-specific code works for both now. * camel-remote-store.c: Likewise. * providers/smtp/camel-smtp-transport.c: Likewise. * providers/pop3/camel-pop3-store.c: Likewise. * Makefile.am (libcamelinclude_HEADERS): Remove camel-tcp-stream-openssl.h svn path=/trunk/; revision=16093
* Remove this: it couldn't be generically used, because different subclassesDan Winship2002-03-112-47/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * camel-tcp-stream.c (camel_tcp_stream_get_socket): Remove this: it couldn't be generically used, because different subclasses returned entirely different types of data. (camel_tcp_stream_get_local_address, camel_tcp_stream_get_remote_address): Add these to replace what get_socket was being used for. (camel_tcp_address_new, camel_tcp_address_free): Utility functions for get_{local,remote}_address. * providers/smtp/camel-smtp-transport.c: Change localaddr to a CamelTcpAddress *. (connect_to_server): Call camel_tcp_stream_get_local_address to get the local IP address. (smtp_disconnect): free localaddr. (smtp_helo): Update for localaddr change. * camel-tcp-stream-raw.c (stream_get_socket): Remove (stream_get_local_address, stream_get_remote_address): Implement. * camel-tcp-stream-ssl.c (stream_get_socket): Remove (stream_get_local_address, stream_get_remote_address): Implement. * camel-tcp-stream-openssl.c (stream_get_socket): Remove (stream_get_local_address, stream_get_remote_address): Implement. svn path=/trunk/; revision=16092
* Don't call camel_remote_store_get_authtypes since we no longer subclassJeffrey Stedfast2002-03-096-50/+272
| | | | | | | | | | | | | | | | | | | | | | 2002-03-08 Jeffrey Stedfast <fejj@ximian.com> * providers/pop3/camel-pop3-provider.c (camel_provider_module_init): Don't call camel_remote_store_get_authtypes since we no longer subclass camel-remote-store. * providers/pop3/camel-pop3-engine.c: Added STARTTLS to the capabilities to look for. (camel_pop3_engine_reget_capabilities): New function to re-get capabilities. * providers/pop3/camel-pop3-store.c: Updated to not subclass CamelRemoteStore. (connect_to_server): Rewritten to not depend on CamelRemoteStore's connect implementation. Also added support for STLS (aka STARTTLS). svn path=/trunk/; revision=15998
* Fix to work with OpenSSL.Jeffrey Stedfast2002-03-071-3/+5
| | | | | | | | | 2002-03-06 Jeffrey Stedfast <fejj@ximian.com> * providers/smtp/camel-smtp-transport.c (connect_to_server): Fix to work with OpenSSL. svn path=/trunk/; revision=15959
* Make this compile.Dan Winship2002-03-071-1/+1
| | | | | | | * providers/smtp/camel-smtp-transport.c (smtp_construct): Make this compile. svn path=/trunk/; revision=15946
* treat "" as "always" to maintain compatablity with old config settingsJeffrey Stedfast2002-03-061-1/+2
| | | | svn path=/trunk/; revision=15939
* Start the ssl stream off in non-ssl mode (useful for STARTTLS).Jeffrey Stedfast2002-03-063-33/+157
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2002-03-05 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-openssl.c (camel_tcp_stream_openssl_new_raw): Start the ssl stream off in non-ssl mode (useful for STARTTLS). (camel_tcp_stream_openssl_enable_ssl): New function to toggle an ssl stream into ssl mode. (open_ssl_connection): Close the sockfd on fail so our caller doesn't have to - this also allows us to save the original errno. (stream_connect): If we want ssl mode, do our ssl stuff. (camel_tcp_stream_openssl_class_init): Init some SSL stuff here instead of in open_ssl_connection since these only ever need to be called once. (stream_read): Only use SSL_read if we are in ssl mode. (stream_write): Only use SSL_write if we are in ssl mode. * providers/smtp/camel-smtp-transport.c (smtp_helo): Check for the STARTTLS extension. (connect_to_server): Try to use STARTTLS whenever possible rather than the old way of doing things. (connect_to_server_wrapper): Wrapper around connect_to_server() to first try STARTTLS and then attempt normal SSL mode if we can't connect via STARTTLS. * camel-tcp-stream-ssl.c (camel_tcp_stream_ssl_enable_ssl): New function to toggle an ssl stream into ssl mode. (camel_tcp_stream_ssl_new_raw): Start the ssl stream off in non-ssl mode (useful for STARTTLS). (stream_connect): Only connect in SSL mode if required. svn path=/trunk/; revision=15937
* Since the AUTH token sometimes uses '=' instead of whitespace, don't useJeffrey Stedfast2002-02-131-1/+2
| | | | | | | | | | 2002-02-12 Jeffrey Stedfast <fejj@ximian.com> * providers/smtp/camel-smtp-transport.c (smtp_helo): Since the AUTH token sometimes uses '=' instead of whitespace, don't use smtp_token_next here. svn path=/trunk/; revision=15688
* Duh, when we grab the apop stamp it needs to include the <> as well, INot Zed2002-02-092-4/+4
| | | | | | | | | | | | | | 2002-02-09 Not Zed <NotZed@Ximian.com> * providers/pop3/camel-pop3-engine.c (get_capabilities): Duh, when we grab the apop stamp it needs to include the <> as well, I even read the rfc, silly me. * providers/pop3/camel-pop3-store.c (pop3_try_authenticate): Doh, when iterating the authtype list, it helps to goto the next node. Found with help from miles. svn path=/trunk/; revision=15636
* The day number has to be 2 chars wide, space filled to work properly withNot Zed2002-02-0811-20/+500
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2002-02-08 Not Zed <NotZed@Ximian.com> * providers/local/camel-spool-summary.c (camel_spool_summary_build_from): The day number has to be 2 chars wide, space filled to work properly with pine, etc. * providers/local/camel-spoold-store.[ch]: new type of provider 'spool directory', which lets you view external mbox dirs without adding any extra cruft. Perhaps it should use . files to store summaries? Still a bit experimental, there's a warning when you select it in the account editor. Finished off most of #1185. Can't rename or move folders. * camel-mime-utils.c (header_decode_date): If the date is 100->1900 then we actually want to use it as the year in the tm struct, not year+100. e.g. year 102 -> 2002, not 2102. 2002-02-07 Not Zed <NotZed@Ximian.com> * providers/local/camel-spool-store.c (get_folder): Pass path into spool_folder_new. * providers/local/camel-spool-folder.c (camel_spool_folder_new): (camel_spool_folder_construct): Take the full path to the folder and use that as the file path, independent of the full_name we use. 2002-02-07 Not Zed <NotZed@Ximian.com> * providers/local/camel-local-provider.c: Added new type, spoold provider, spoold: for local directories. * providers/imap/camel-imap-store.c (get_one_folder_offline): Create offline uri's in a compatible manner to online ones. svn path=/trunk/; revision=15606
* Implementation of NTLM (aka "Secure Password Authentication") auth, takenDan Winship2002-02-081-1/+1
| | | | | | | | | | | | | | | | | * camel-sasl-ntlm.c: Implementation of NTLM (aka "Secure Password Authentication") auth, taken from soup. * Makefile.am (libcamel_la_SOURCES, libcamel_la_HEADERS): Add camel-sasl-ntlm. * camel-sasl.c: Add refs to camel-sasl-ntlm. * providers/imap/camel-imap-store.c (try_auth): Use imap_next_word() to skip over the "+ " of the continuation rather than just "resp + 2" since Exchange (incorrectly) returns "+" instead of "+ " for an empty continuation response. svn path=/trunk/; revision=15605
* Use "pop" instead of "pop3" so current configurations continue to work.Jeffrey Stedfast2002-01-311-1/+1
| | | | | | | | | 2002-01-30 Jeffrey Stedfast <fejj@ximian.com> * providers/pop3/camel-pop3-provider.c: Use "pop" instead of "pop3" so current configurations continue to work. svn path=/trunk/; revision=15532
* Changed name from "NT Login" to simply "Login".Not Zed2002-01-3010-666/+1608
| | | | | | | | | | | | | | | | | | | | | | | 2002-01-30 Not Zed <NotZed@Ximian.com> * camel-sasl-login.c: Changed name from "NT Login" to simply "Login". * providers/pop3/*: Entirely new pop implmentation, supporting pipelining. 2002-01-29 Not Zed <NotZed@Ximian.com> * camel-data-cache.c (free_busy): We dont want to unref the stream, instead, stop listening to the finalised events, and free the path only. 2002-01-25 Not Zed <NotZed@Ximian.com> * camel-data-cache.c (stream_finalised): Remove the object from the busy_stream hashtable, not the busy_path hashtable. svn path=/trunk/; revision=15521
* Added more kludge to an existing Exchange IMAP 5.5 kludge to work aroundJeffrey Stedfast2002-01-301-1/+5
| | | | | | | | | | 2002-01-29 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (imap_update_summary): Added more kludge to an existing Exchange IMAP 5.5 kludge to work around it returning multiple messages with the same UIDs. svn path=/trunk/; revision=15513
* New function to decode an enhanced status code. (smtp_set_exception): SetsJeffrey Stedfast2002-01-291-95/+126
| | | | | | | | | | | | | | | | | | 2002-01-28 Jeffrey Stedfast <fejj@ximian.com> * providers/smtp/camel-smtp-transport.c (smtp_decode_status_code): New function to decode an enhanced status code. (smtp_set_exception): Sets an exception based on the Enhanced-Status-Code. (esmtp_get_authtypes): Don't diplicate the key in the hash since the key and value are the same. (smtp_rcpt): Include the failed recipient in the error message to be more helpful to the user. * camel-mime-utils.c (hex_decode): Make sure to allocate enough for the NUL byte. svn path=/trunk/; revision=15500
* Use flags rather than a bunch of gboolean variables. (smtp_connect): Same.Jeffrey Stedfast2002-01-292-71/+154
| | | | | | | | | | | | | | | | | | | | | 2002-01-28 Jeffrey Stedfast <fejj@ximian.com> * providers/smtp/camel-smtp-transport.c (smtp_construct): (connect_to_server): Use flags rather than a bunch of gboolean variables. (smtp_connect): Same. (smtp_mail): Here too. Use the enhanced status codes if available. (smtp_data): And again here. (smtp_helo): Finally here. Also detect the ENHANCEDSTATUSCODES extension. (smtp_rcpt): Use the enhanced status codes if available. (smtp_rset): Here too. (smtp_quit): And finally here. * camel-transport.h: Removed gboolean supports_8bit since this is pretty local to only SMTP for now. svn path=/trunk/; revision=15498
* Clean up some of the Makefiles so we dont' link every library multipleEttore Perazzoli2002-01-251-2/+2
| | | | | | times, causing big libtool 1.4 pain. svn path=/trunk/; revision=15461
* As a temporary solution, just printf ("\a"); to make a beep :-)Jeffrey Stedfast2002-01-224-41/+65
| | | | | | | | | | | | | | | | | 2002-01-21 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (do_beep): As a temporary solution, just printf ("\a"); to make a beep :-) * providers/imap/camel-imap-command.c (imap_command_strdup_vprintf): Encode the mailbox to UTF-7 here. * providers/imap/camel-imap-utils.c (imap_parse_list_response): Decode the mailbox name as we parse the list response. (imap_mailbox_decode): It's only an illegal mailbox name if it didn't switch back to US-ASCII mode. svn path=/trunk/; revision=15421
* New function to decode an IMAP mailbox name from modified UTF-7 encodingJeffrey Stedfast2002-01-192-1/+266
| | | | | | | | | | | | 2002-01-18 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-utils.c (imap_mailbox_decode): New function to decode an IMAP mailbox name from modified UTF-7 encoding to UTF-8. (imap_mailbox_encode): New function to convert a mailbox name from UTF-8 to IMAP's modified UTF-7 encoding. svn path=/trunk/; revision=15361
* Updated to match the new send_to API. (smtp_send): Get the from addressJeffrey Stedfast2002-01-162-12/+18
| | | | | | | | | | | | | | | | | 2002-01-15 Jeffrey Stedfast <fejj@ximian.com> * providers/smtp/camel-smtp-transport.c (smtp_send_to): Updated to match the new send_to API. (smtp_send): Get the from address and pass that along to smtp_send_to(). * providers/sendmail/camel-sendmail-transport.c (sendmail_send_to): Updated to match the new send_to API. * camel-transport.c (camel_transport_send_to): Now takes a from argument too. svn path=/trunk/; revision=15328
* Sort the needheaders UID array and fixed to respect the UID_SET_LIMIT.Jeffrey Stedfast2002-01-161-28/+41
| | | | | | | | | | | | | | 2002-01-15 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (imap_update_summary): Sort the needheaders UID array and fixed to respect the UID_SET_LIMIT. This should now finish the fixification of bug #2529. There's still the possible issue that a command-line (The only command-line I can think of that can still be too long is a SEARCH command, but this can't possibly be fixed until we rewrite the imap code to use Zucchi's ImapEngine idea). svn path=/trunk/; revision=15327
* Updated to use the new imap_uid_array_to_set() interface.Jeffrey Stedfast2002-01-153-110/+171
| | | | | | | | | | | | | | | | | | | | | 2002-01-14 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (imap_expunge_uids_online): Updated to use the new imap_uid_array_to_set() interface. (imap_expunge_uids_resyncing): Same. (do_copy): Here too. (imap_update_summary): Added a FIXME comment to rewrite allowing for a uid-set limitation. (get_matching): Copy some of the logic over from imap_uid_adday_to_set() to limit the length of the uid-set string. (imap_sync_online): Added a comment to explain what is going on with get_matching() since the behavior has changed slightly. * providers/imap/camel-imap-utils.c (imap_uid_array_to_set): Modify the interface so that we can limit the size of the uid set string returned. svn path=/trunk/; revision=15318
* Rewritten to use a cache for body searches when online. Will need someNot Zed2002-01-143-111/+384
| | | | | | | | | | | | | | | | | | | | 2002-01-14 Not Zed <NotZed@Ximian.com> * providers/imap/camel-imap-search.c (imap_body_contains): Rewritten to use a cache for body searches when online. Will need some heavy testing but so far seems to be beneficial. * providers/imap/camel-imap-folder.c (imap_search_by_expression, search_by_uids): dont initialise search object here. (camel_imap_folder_new): Setup search object here with pointer to cache dir. 2001-12-01 Not Zed <NotZed@Ximian.com> * camel-store-summary.[ch]: New class to store a store's folder list in. Not yet completed. svn path=/trunk/; revision=15314
* Kludge around a bug in Exchange 5.5 that reports 2 messages with the sameJeffrey Stedfast2002-01-121-2/+24
| | | | | | | | | | 2002-01-11 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (imap_update_summary): Kludge around a bug in Exchange 5.5 that reports 2 messages with the same UID. Fixes bug #17694. Replaces the fix from yesterday. svn path=/trunk/; revision=15298
* If PATH_MAX doesn't exist, use _POSIX_PATH_MAX.Jeffrey Stedfast2002-01-111-0/+8
| | | | | | | | | 2002-01-10 Jeffrey Stedfast <fejj@ximian.com> * providers/local/camel-local-folder.c: If PATH_MAX doesn't exist, use _POSIX_PATH_MAX. svn path=/trunk/; revision=15291
* If mi is NULL, don't bother updating it. Should fix bug #17694.Jeffrey Stedfast2002-01-111-0/+5
| | | | | | | | | 2002-01-10 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (imap_update_summary): If mi is NULL, don't bother updating it. Should fix bug #17694. svn path=/trunk/; revision=15290
* Kludge around Microsoft Exchange 5.5 (bug #5348) by forgetting ourJeffrey Stedfast2002-01-111-19/+36
| | | | | | | | | | | 2002-01-10 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (imap_update_summary): Kludge around Microsoft Exchange 5.5 (bug #5348) by forgetting our currently selected folder and re-SELECTing it so that the Exchange server has a chance to realise it has new messages. svn path=/trunk/; revision=15284
* If the mbox file is a symlink, follow the symlink and get the One TrueJeffrey Stedfast2002-01-101-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2002-01-09 Jeffrey Stedfast <fejj@ximian.com> * providers/local/camel-mbox-folder.c (camel_mbox_folder_new): If the mbox file is a symlink, follow the symlink and get the One True Path so that we can rewrite the mbox later without worrying about clobbering the symlink. 2002-01-08 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-search.c (TODO): There are a few sexp callbacks that could be modified to use fms->info rather than using a message object (like date and possibly mlist stuff) but *only* if the date exists on the CamelMessageInfo object (since it may be blank except for message flags). (camel_filter_search_get_message): New internal convenience function to make sure that the FilterMessageSearch has loaded the message (and to load the message if this isn't the case). (check_header): Call camel_filter_search_get_message(). (header_exists): Same. (header_regex): Here too. (header_full_regex): And here. (body_contains): Again here. (body_regex): Here too. (get_sent_date): Here also. (get_received_date): Same. (get_source): Here if we need to. (camel_filter_search_match): Now takes a callback function/data pair for on-demand message loading so that we don't necessarily have to load the message if the defined filter rules don't require it. * camel-filter-driver.c (camel_filter_driver_filter_folder): Don't bother fetching the message here, let camel_filter_driver_filter_message() worry about this. (get_message_cb): New utility callback to fetch a message. (camel_filter_driver_filter_message): Only fetch the message if we absolutely need it to get a CamelMessageInfo. Instead of passing a message object to camel_filter_search_match(), pass get_message_cb and some user_data so that the matching code can fetch the message on demand. svn path=/trunk/; revision=15276
* Change the prototype for camel_address_get_type to return a CamelTypeJeffrey Stedfast2001-12-212-52/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | 2001-12-20 Jeffrey Stedfast <fejj@ximian.com> * camel-address.h: Change the prototype for camel_address_get_type to return a CamelType (since internally this is what it returns and also in case we decide to write a replacement for the current CamelObject it'd be easier to drop in). * camel-internet-address.h: Same but for camel_internet_address_get_type() * providers/smtp/camel-smtp-transport.c (smtp_send_to): Updated to use a CamelAddress of recipients. (smtp_send): Since smtp_send_to now takes a CamelAddress recipients argument, our lives have been simplified and we can now just concat To/Cc/Bcc into a recipients addr and send away. * providers/sendmail/camel-sendmail-transport.c (sendmail_send_to): Updated to use a CamelAddress of recipients. * camel-transport.c (camel_transport_send_to): Now takes a CamelAddress argument for the recipient list rather than a GList. svn path=/trunk/; revision=15197
* install in the right directory. (accidentally didn't commit these before)Dan Winship2001-12-202-9/+4
| | | | svn path=/trunk/; revision=15186
* only use major and minor version in the camel providerdir, not micro and nanoDan Winship2001-12-185-21/+8
| | | | svn path=/trunk/; revision=15121
* Reverted my previous changes here since it doesn't actually work afterall.Jeffrey Stedfast2001-12-172-26/+26
| | | | | | | | | | | | 2001-12-16 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (get_content): Reverted my previous changes here since it doesn't actually work afterall. * providers/imap/camel-imap-wrapper.c (imap_wrapper_hydrate): Update to do uudecoding when appropriate. svn path=/trunk/; revision=15098
* Try to use the original boundary so luis will stop bugging me about "dataJeffrey Stedfast2001-12-171-1/+7
| | | | | | | | | | | | 2001-12-16 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (get_content): Try to use the original boundary so luis will stop bugging me about "data corruption". Also preserve other params in the multipart content-type by dumping it to a string and setting it on the mime part. svn path=/trunk/; revision=15094
* Try to use the original boundary so luis will stop bugging me about "dataJeffrey Stedfast2001-12-171-2/+4
| | | | | | | | | | 2001-12-16 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (get_content): Try to use the original boundary so luis will stop bugging me about "data corruption". svn path=/trunk/; revision=15093
* Don't use regex matching. Fixes bug #16227.Jeffrey Stedfast2001-12-015-76/+93
| | | | | | | | | | | | | | | | | | | | 2001-11-29 Jeffrey Stedfast <fejj@ximian.com> * camel-folder-search.c (search_body_contains): Don't use regex matching. Fixes bug #16227. * camel-mime-message.c (best_encoding): Check the content-object's mime type, not the mime part types. Should fix bug #15843. 2001-11-27 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (get_content): Return NULL if construct_from_stream fails. (get_message): Same. (get_message_simple): Here too. (add_message_from_data): And here. svn path=/trunk/; revision=14834
* Completely new implementation of NNTP.Not Zed2001-11-3010-872/+1759
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-11-30 Not Zed <NotZed@Ximian.com> * providers/nntp/camel-nntp-*.c: Completely new implementation of NNTP. Doesn't support subscriptions yet (lists all folders), but should be more reliable (faster?), and has an integrated cache. * camel-exception.c (camel_exception_new): Use e_memchunks for exception blocks. (camel_exception_free): Same. * camel-data-cache.[ch]: New object for managing on-disk caches of anything that can be stored in a camel-stream. * camel-file-utils.c (camel_file_util_mkdir): New function, just a nicer place to put this (than camel-store), should be removed from camel-store. (camel_file_util_safe_filename): New function to url-encode a filename. * camel-mime-parser.c (drop_states): New func to drop the parser state to initial state. (folder_scan_init_with_fd): (folder_scan_init_with_stream): Call above func to reset state if the stream is changed on us so we can change streams to reuse a parser object. svn path=/trunk/; revision=14822
* If the uid doesn't have a ',' in it, fail to crash.Not Zed2001-11-283-14/+47
| | | | | | | | | | | | | | | | | | | | 2001-11-25 Not Zed <NotZed@Ximian.com> * providers/nntp/camel-nntp-folder.c (nntp_folder_get_message): If the uid doesn't have a ',' in it, fail to crash. * providers/nntp/camel-nntp-newsrc.c (camel_nntp_newsrc_article_is_read): check group != NULL before scanning. (camel_nntp_newsrc_get_highest_article_read): " (camel_nntp_newsrc_get_num_articles_read): " (camel_nntp_newsrc_mark_range_read): " * providers/nntp/camel-nntp-store.c (camel_nntp_store_get_overview_fmt): IF we dont have nntp_list_follows, dont try and get a list response. (nntp_store_get_folder_info): Set path part of folderinfo. svn path=/trunk/; revision=14799
* Check to see that errno is non-zero before returning g_strerror. If it'sJeffrey Stedfast2001-11-271-1/+4
| | | | | | | | | | 2001-11-20 Jeffrey Stedfast <fejj@ximian.com> * providers/smtp/camel-smtp-transport.c (get_smtp_error_string): Check to see that errno is non-zero before returning g_strerror. If it's 0, then we have an unknown error. svn path=/trunk/; revision=14790
* Abort if body == NULL.Jeffrey Stedfast2001-11-171-1/+1
| | | | | | | | | 2001-11-16 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-utils.c (imap_parse_body): Abort if body == NULL. svn path=/trunk/; revision=14738
* see the ChangeLog, I forgetJeffrey Stedfast2001-11-171-4/+4
| | | | svn path=/trunk/; revision=14736
* If we get a BYE response, call camel_service_disconnect() and set anJeffrey Stedfast2001-11-171-13/+20
| | | | | | | | | | | | | 2001-11-14 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-command.c (camel_imap_command_response): If we get a BYE response, call camel_service_disconnect() and set an exception. Also do the check for "* BYE" first instead of passing it off imap_read_untagged() since we'll just waste time in there mallocing left and right only to arrive at the single response line "* BYE" again :-) svn path=/trunk/; revision=14735
* If we get a user cancel and that causes us to fail to authenticate, abort92001-11-101-0/+3
| | | | | | | | | | 2001-11-09 <NotZed@Ximian.com> * providers/imap/camel-imap-store.c (imap_auth_loop): If we get a user cancel and that causes us to fail to authenticate, abort rather than loop forever. Fix for #14951. svn path=/trunk/; revision=14648
* Now takes a command-length argument so we can 1) avoid duping the commandJeffrey Stedfast2001-11-094-28/+47
| | | | | | | | | | | | | | | | | | | | | | | | 2001-11-06 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-command.c (camel_imap_command_continuation): Now takes a command-length argument so we can 1) avoid duping the command string yet again, yay. 2) we now don't have to worry about embedded nul-chars screwing us over (we still need to avoid allowing them into the string but at least now it won't mess us up). * providers/imap/camel-imap-folder.c (do_append): Instead of appending a nul char to the end of the byte array and then passing that off as if it were a string to camel_imap_command_continuation, instead pass the byte-array length since that function now takes a length argument. Yay. Also encode any 8bit parts to avoid the possibility of sending embedded nul chars to the imap server. * providers/imap/camel-imap-store.c (try_auth): Updated to pass a command-length argument to camel_imap_command_continuation(). svn path=/trunk/; revision=14637
* Same as below.12001-11-013-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-10-31 <NotZed@Ximian.com> * providers/local/camel-spool-folder.c (spool_get_message): Same as below. * providers/local/camel-maildir-folder.c (maildir_get_message): Same as below. * providers/local/camel-mbox-folder.c (mbox_get_message): Set USER_CANCEL if failed due to EINTR. * camel-filter-driver.c (camel_filter_driver_filter_mbox): If construct from parser fails due to user cancel, set USER_CANCEL on exception. * camel-mime-part.c (construct_from_parser): Return error if the parser had an io error. * camel-mime-message.c (construct_from_parser): Check error on parser/return error. * camel-mime-parser.c (folder_scan_init): Init error number. (camel_mime_parser_errno): New function, return errno of any io failures. (folder_read): Set errno if a failure occured. (folder_seek): Same. (folder_scan_init_with_fd): Setup errno depeding on ok/failure. (folder_scan_init_with_stream): Same. svn path=/trunk/; revision=14559
* Remove the X-Evolution header before anyone else gets to see this private02001-10-301-0/+2
| | | | | | | | | | | 2001-10-30 <NotZed@Ximian.com> * providers/local/camel-mbox-folder.c (mbox_get_message): Remove the X-Evolution header before anyone else gets to see this private thing. Shoudl fix 11676 since we were inheriting flags from X-Evolution headers we didn't want to. svn path=/trunk/; revision=14453
* If we can't retrieve the message, ignore it, it can't match.02001-10-302-10/+8
| | | | | | | | | | | | | | | | | | 2001-10-30 <NotZed@Ximian.com> * camel-folder-search.c (match_message): If we can't retrieve the message, ignore it, it can't match. * providers/imap/camel-imap-search.c (camel_imap_search_class_init): Setup parent class pointer. (imap_body_contains): If offline, just use the parent body_contains method which will get the messages and search them manually. * providers/imap/camel-imap-folder.c (imap_search_by_expression, imap_search_by_uids): Remove offline check. svn path=/trunk/; revision=14442
* Dont try to move ibex if we have none.02001-10-301-4/+7
| | | | | | | | | 2001-10-30 <NotZed@Ximian.com> * providers/local/camel-local-store.c (rename_folder): Dont try to move ibex if we have none. svn path=/trunk/; revision=14429
* w(x) out some warnings.02001-10-301-1/+2
| | | | | | | | | | | | 2001-10-30 <NotZed@Ximian.com> * camel-mime-utils.c (header_decode_mailbox): w(x) out some warnings. * providers/local/camel-local-summary.c (camel_local_summary_load): Remove the warning about not loading summary file - its a valid case for new folders. svn path=/trunk/; revision=14411
* If we get an empty name, then mark that as NoSelect. Workaround fix for02001-10-301-2/+2
| | | | | | | | | | 2001-10-30 <NotZed@Ximian.com> * providers/imap/camel-imap-store.c (parse_list_response_as_folder_info): If we get an empty name, then mark that as NoSelect. Workaround fix for #13239. svn path=/trunk/; revision=14392
* Set an X-Evolution-Source header on the returned message so replies comeDan Winship2001-10-301-0/+9
| | | | | | | | * providers/imap/camel-imap-folder.c (get_message_simple, imap_get_message): Set an X-Evolution-Source header on the returned message so replies come from the right identity. svn path=/trunk/; revision=14388
* Don't emit a folder_subscribed signal if we are in the process of renamingJeffrey Stedfast2001-10-303-60/+96
| | | | | | | | | | | | | | | | | | 2001-10-29 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-store.c (subscribe_folder): Don't emit a folder_subscribed signal if we are in the process of renaming folders. (unsubscribe_folder): Same here but for the unsubscribe signal. (rename_folder): Unsubscribe from the folder being renamed and any subfolders it may have before actually renaming. Once the folder has been renamed, re-subscribe to it and it's subfolders with the new name. * camel-store.c (camel_folder_info_build): Sort the folder info's before constructing the tree. svn path=/trunk/; revision=14378
* Don't free the hash table key if the folder wasn't found in the hashDan Winship2001-10-301-4/+5
| | | | | | | | | | * providers/imap/camel-imap-store.c (unsubscribe_folder): Don't free the hash table key if the folder wasn't found in the hash table. I'm not sure where the bug is/was that made it possible to add a folder to the tree after creating it failed, but now if that happens, it won't crash if you try to delete it again. (#11492) svn path=/trunk/; revision=14348
* Turn off w() -> warnings.92001-10-295-4/+114
| | | | | | | | | | | | | | | | | | | 2001-10-29 <NotZed@Ximian.com> * camel-mime-utils.c: Turn off w() -> warnings. * providers/imap/camel-imap-store.c (rename_folder): Also rename the message cache. (rename_folder): Fix subscribed folders table with rename(s). * providers/imap/camel-imap-folder.c (imap_rename): Implement, rename the cache dir pointer. * providers/imap/camel-imap-message-cache.c (camel_imap_message_cache_set_path): New method to set the path used by a message cache. svn path=/trunk/; revision=14327
* Changed to call ibex_move to rename it internally.82001-10-281-9/+44
| | | | | | | | | 2001-10-28 <NotZed@Ximian.com> * providers/local/camel-local-store.c (rename_folder): Changed to call ibex_move to rename it internally. svn path=/trunk/; revision=14294
* Use path not protocol as the path part of the uri of the folder_created82001-10-284-8/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-10-28 <NotZed@Ximian.com> * providers/local/camel-local-folder.c (camel_local_folder_construct): Use path not protocol as the path part of the uri of the folder_created event. * providers/local/camel-maildir-store.c (scan_dir): If FAST is set, dont try and scan for unread counts. * providers/local/camel-local-store.c (create_folder): Implement, just return the folderinfo of the folder matched, not all of it. * camel-store.c (camel_store_rename_folder): Rename the camelfolders before emitting the folderchanged event (otherwise vstore fails to pick up change. * camel-store.c (camel_store_init): Always use a default dir_sep of '/'. * camel-store.h (struct _CamelStore): Added a dir_sep to the base store so rename and whatnot can work, temporary fix for mixed dir separator in folder name api's. * providers/imap/camel-map-store.c: (imap_connect_online): Also set the store's dir_sep here. (imap_connect_offline): " svn path=/trunk/; revision=14275
* More fixing of the license texts.Ettore Perazzoli2001-10-2812-140/+132
| | | | svn path=/trunk/; revision=14217
* More fixing of the license texts.Ettore Perazzoli2001-10-287-77/+77
| | | | svn path=/trunk/; revision=14216
* Fixing the license text.Ettore Perazzoli2001-10-2857-57/+0
| | | | svn path=/trunk/; revision=14212
* Finished implementation.72001-10-272-20/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-10-27 <NotZed@Ximian.com> * providers/imap/camel-imap-store.c (rename_folder): Finished implementation. * providers/local/camel-local-folder.c (local_rename): Implement local rename of folder objects. 2001-10-26 <NotZed@Ximian.com> * camel-vee-folder.c (camel_vee_folder_class_init): Hook into rename function. (vee_rename): Implement the veefolder rename function. (camel_vee_folder_class_init): (folder_changed_change): Kill a warning with a cast. * camel-vee-store.c (vee_rename_folder): Emit a folder_renamed event properly, also call parent to do some rename stuff. * camel-store.h: Added a CamelRenameInfo for the rename event. * camel-folder.c (camel_folder_rename): New function to rename a folder object. (camel_folder_class_init): Added a renamed event. (folder_rename): Default impl, set full_name, and set name assuming the dir separator is '/'. * camel-store.c (camel_store_class_init): Added folder_renamed event. (camel_store_rename_folder): Rename an active folder object if we have one, and update the folder table. (rename_folder): Make a default implementation that handles updating the folder tree. svn path=/trunk/; revision=14204
* Don't bother checking ex since we can rely on the response being NULL onJeffrey Stedfast2001-10-271-12/+61
| | | | | | | | | | 2001-10-26 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-store.c (delete_folder): Don't bother checking ex since we can rely on the response being NULL on error. (rename_folder): Implemented. svn path=/trunk/; revision=14201
* Update the licensing information to require version 2 of the GPLEttore Perazzoli2001-10-2757-114/+114
| | | | | | (instead of version 2 or any later version). svn path=/trunk/; revision=14190
* Check to make sure that the dataset is non-NULL before using and/orJeffrey Stedfast2001-10-271-19/+25
| | | | | | | | | | 2001-10-26 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (imap_get_message): Check to make sure that the dataset is non-NULL before using and/or freeing. svn path=/trunk/; revision=14181
* Lets try putting a camel_stream_reset() here. Logic being that the streamJeffrey Stedfast2001-10-271-0/+1
| | | | | | | | | | | | | 2001-10-26 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-message-cache.c (camel_imap_message_cache_get): Lets try putting a camel_stream_reset() here. Logic being that the stream may have been read from since it was cached and thus our caller may try reading from it and get no data from it since it is already at the EOS. This may fix bug #12943. svn path=/trunk/; revision=14165
* Don't let fi->name be NULL.Dan Winship2001-10-251-0/+2
| | | | | | | * providers/imap/camel-imap-store.c (unsubscribe_folder): Don't let fi->name be NULL. svn path=/trunk/; revision=14079
* made d(x) x recompile again.32001-10-231-5/+5
| | | | | | | | 2001-10-23 <NotZed@Ximian.com> * providers/local/camel-mbox-summary.c: made d(x) x recompile again. svn path=/trunk/; revision=13932
* No, use Storing, as the other code does :p (spool_summary_check): Check22001-10-231-3/+3
| | | | | | | | | | 2001-10-22 <NotZed@Ximian.com> * providers/local/camel-spool-summary.c (summary_rebuild): No, use Storing, as the other code does :p (spool_summary_check): Check for consistency. svn path=/trunk/; revision=13904
* s/summarising/summarizing/. (spool_summary_check): s/summarise/summarize/.Jon Trowbridge2001-10-231-3/+3
| | | | | | | | | | 2001-10-22 Jon Trowbridge <trow@ximian.com> * providers/local/camel-spool-summary.c (summary_rebuild): s/summarising/summarizing/. (spool_summary_check): s/summarise/summarize/. svn path=/trunk/; revision=13902
* Added CAMEL_CFLAGS so we get the right iconv stuff, patch from Yanko82001-10-195-0/+5
| | | | | | | | | | 2001-10-18 <NotZed@Ximian.com> * providers/(imap|local|pop3|sendmail|smtp)/Makefile.am: Added CAMEL_CFLAGS so we get the right iconv stuff, patch from Yanko Kaneti <yaneti@declera.com> svn path=/trunk/; revision=13783
* Flush the stream here, not sure it really matters but it might (hopefully)Jeffrey Stedfast2001-10-191-0/+1
| | | | | | | | | | 2001-10-18 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-message-cache.c (insert_finish): Flush the stream here, not sure it really matters but it might (hopefully) fix bug #12943. svn path=/trunk/; revision=13779
* String cleanup for bug #6640.Jeffrey Stedfast2001-10-191-2/+2
| | | | | | | | | 2001-10-18 Jeffrey Stedfast <fejj@ximian.com> * providers/local/camel-local-provider.c: String cleanup for bug #6640. svn path=/trunk/; revision=13777
* Fix my Cyrus imapd workaround...instead of checking to see if info->flagsJeffrey Stedfast2001-10-191-5/+5
| | | | | | | | | | 2001-10-18 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (imap_sync_online): Fix my Cyrus imapd workaround...instead of checking to see if info->flags == FLAGGED, just check to see if it contains any IMAP flags. svn path=/trunk/; revision=13770
* Use '.' as the inbox name for filter new messages test.72001-10-181-1/+1
| | | | | | | | | | 2001-10-17 <NotZed@Ximian.com> * providers/local/camel-maildir-folder.c (camel_maildir_folder_new): Use '.' as the inbox name for filter new messages test. svn path=/trunk/; revision=13742
* Same as maildir and mbox append-message.Jeffrey Stedfast2001-10-182-6/+14
| | | | | | | | | | | | | | | | | | | | | | | 2001-10-17 Jeffrey Stedfast <fejj@ximian.com> * providers/local/camel-mh-folder.c (mh_append_message): Same as maildir and mbox append-message. * providers/local/camel-maildir-folder.c (maildir_append_message): Same as mbox append. * camel-exception.c (camel_exception_set): Make sure the new description isn't the same as the old description pointer before freeing the old one. (camel_exception_setv): Don't free the old description until we set the new one this way we can reuse the old description in the new description. * providers/local/camel-mbox-folder.c (mbox_append_message): If errno == EINTR, then we got a user-cancel so set the exception appropriately so that we don't make the user shit his pants. svn path=/trunk/; revision=13739
* Make sure the new description isn't the same as the old descriptionJeffrey Stedfast2001-10-181-4/+8
| | | | | | | | | | | | | | | | | 2001-10-17 Jeffrey Stedfast <fejj@ximian.com> * camel-exception.c (camel_exception_set): Make sure the new description isn't the same as the old description pointer before freeing the old one. (camel_exception_setv): Don't free the old description until we set the new one this way we can reuse the old description in the new description. * providers/local/camel-mbox-folder.c (mbox_append_message): If errno == EINTR, then we got a user-cancel so set the exception appropriately so that we don't make the user shit his pants. svn path=/trunk/; revision=13737
* Patch from Danw, Use unread count of -1 to mark unflagged messages. Make72001-10-182-9/+12
| | | | | | | | | | | | | | | 2001-10-17 <NotZed@Ximian.com> * providers/imap/camel-imap-store.c (get_folder_info_online): (parse_list_response_as_folder_info): Patch from Danw, Use unread count of -1 to mark unflagged messages. Make sure any folder we dont lookup explicitly is marked as -1. Should fix #9947 and friends. * providers/local/camel-mbox-summary.c (mbox_summary_sync): Only touch the summary if the timestamp or size changed. svn path=/trunk/; revision=13731
* If CAMEL_DEBUG is defined, print some useful ref/unref info.Jeffrey Stedfast2001-10-171-1/+1
| | | | | | | | | | | | | | | | 2001-10-16 Jeffrey Stedfast <fejj@ximian.com> * camel-object.[c,h]: If CAMEL_DEBUG is defined, print some useful ref/unref info. * providers/imap/camel-imap-store.c (delete_folder): Fixed an assignment warning. * camel-uid-cache.c (camel_uid_cache_new): Make sure that the parent directory exists before trying to open the filename, if it doesn't, create it. svn path=/trunk/; revision=13707
* Replace the Bcc headers in a single location and don't flush the dataJeffrey Stedfast2001-10-141-21/+16
| | | | | | | | | | 2001-10-13 Jeffrey Stedfast <fejj@ximian.com> * providers/smtp/camel-smtp-transport.c (smtp_data): Replace the Bcc headers in a single location and don't flush the data unless the write was successful. svn path=/trunk/; revision=13662
* oops, it should remove the bcc header, not the cc headerJeffrey Stedfast2001-10-131-8/+29
| | | | svn path=/trunk/; revision=13643
* Remove the stripheader filter from the build.Jeffrey Stedfast2001-10-131-8/+15
| | | | | | | | | | | | | | | | 2001-10-12 Jeffrey Stedfast <fejj@ximian.com> * Makefile.am: Remove the stripheader filter from the build. * camel-mime-filter-stripheader.[c,h]: Removed. * providers/smtp/camel-smtp-transport.c (smtp_data): Check the return value of camel_stream_flush to make sure it flushed the data successfully before continuing. Don't use the stripheader filter, it was completely broken - instead remove the header and set it again after we send. svn path=/trunk/; revision=13641
* oops, we want get_unread_message_count, not get_message_count!02001-10-111-1/+1
| | | | | | | | | | | | | | 2001-10-10 <NotZed@Ximian.com> * providers/local/camel-maildir-store.c (scan_dir): oops, we want get_unread_message_count, not get_message_count! 2001-10-09 <NotZed@Ximian.com> * camel-service.c (camel_service_disconnect): Duplicate connect code that unregisters a cancel op if we created one. svn path=/trunk/; revision=13561
* Implement.92001-10-105-5/+175
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-10-09 <NotZed@Ximian.com> * providers/local/camel-spool-folder.c (spool_search_by_uids): Implement. * providers/imap/camel-imap-search.c (imap_body_contains): If searching a sub-set of the total message count, then use a UID range to search only specific messages. * camel-vee-folder.c (vee_folder_change_match): Removed. (folder_changed_add_uid): Helper func for changed code. (folder_changed_remove_uid): " (folder_changed_change_uid): " (folder_changed): Rewritten. Supports proper auto-updating of changes, but not removals till a sync occurs. (vee_search_by_uids): Implement. (folder_changed): Changed to call an async threaded function to do the actual folder updating. * camel-folder-summary.c (camel_flag_list_copy): New func to copy a whole list of flags. (camel_tag_list_copy): New func to copy a whole list of flags. * providers/imap/camel-imap-folder.c (imap_search_by_uids): Implement. * providers/local/camel-local-folder.c (local_search_by_uids): Implement. * camel-folder.c (camel_folder_search_by_uids): New function, search a subset of uid's. (search_by_uids): Default impl, return error. svn path=/trunk/; revision=13532
* replace the ever-growing list of gbooleans with a single guint32 forDan Winship2001-10-096-25/+12
| | | | | | | | | | | | | | | | | | | | | | * camel-folder.h (struct _CamelFolder): replace the ever-growing list of gbooleans with a single guint32 for flags. * camel-folder.c: Update folder flag setting/checking. * providers/pop3/camel-pop3-folder.c (camel_pop3_folder_init): * providers/nntp/camel-nntp-folder.c (camel_nntp_folder_new): * providers/local/camel-spool-folder.c (spool_init, camel_spool_folder_new): * providers/local/camel-maildir-folder.c (camel_maildir_folder_new): * providers/local/camel-local-folder.c (local_init): * providers/imap/camel-imap-folder.c (camel_imap_folder_init, camel_imap_folder_new): * camel-vtrash-folder.c (camel_vtrash_folder_init): * camel-vee-folder.c (camel_vee_folder_init): * camel-digest-folder.c (camel_digest_folder_init): update folder flag setting. svn path=/trunk/; revision=13509
* Unlock the store before returning error. (noted by NotZed)Dan Winship2001-10-091-1/+3
| | | | | | | * providers/imap/camel-imap-store.c (get_folder_online): Unlock the store before returning error. (noted by NotZed) svn path=/trunk/; revision=13501
* Use a folder_subscribed event rather than a folder_created one.52001-10-061-2/+22
| | | | | | | | | | | | | | | | | | 2001-10-05 <NotZed@Ximian.com> * providers/imap/camel-imap-store.c (subscribe_folder): Use a folder_subscribed event rather than a folder_created one. (unsubscribe_folder): Similarly for unsubscribed/deleted. (create_folder): Emit a folder_created event on the folders we added. Not sure hsould probably check which ones are new and which ones are just existing ones? (delete_folder): Emit a folder_deletd event when we've deleted the folder. Part of fix for #11831. * camel-store.c (camel_store_class_init): Added folder_subscribed/unsubscribed events. svn path=/trunk/; revision=13471
* Remove now unused 'recents' array/freeing func.32001-10-041-5/+0
| | | | | | | | | | | | | | 2001-10-03 <NotZed@Ximian.com> * providers/imap/camel-imap-folder.c (camel_imap_folder_changed): Remove now unused 'recents' array/freeing func. * camel-object.c (camel_object_trigger_event): Oops, always run the prep function, even if we have no hooks listening. Causes incoming imap recents to get ignored bythe camel-folder filter inbox code. svn path=/trunk/; revision=13398
* Dont explicitly save metadata, its saved in summary_sync.32001-10-045-50/+24
| | | | | | | | | | | | | | | | | | | | | | | | | 2001-10-03 <NotZed@Ximian.com> * providers/local/camel-local-folder.c (local_sync): Dont explicitly save metadata, its saved in summary_sync. * providers/local/camel-mh-summary.c: Call superclass. (mh_summary_check): Dont save ibex. * providers/local/camel-maildir-summary.c: Call superclass method. (maildir_summary_check): Dont save ibex explictly. * providers/local/camel-mbox-summary.c: Call super-class sync when done, saves summary/ibex, etc. (mbox_summary_check): Dont save ibex. (mbox_summary_sync): Call summary_check rather than trying to update from our known position. * providers/local/camel-local-summary.c (camel_local_summary_check): Dont save the summary or index here. (local_summary_sync): Save the summary/index here. svn path=/trunk/; revision=13397
* Strange are the ways of alloca. Fixes 11543.Dan Winship2001-10-031-1/+4
| | | | | | | * providers/local/camel-local-provider.c (local_url_equal): Strange are the ways of alloca. Fixes 11543. svn path=/trunk/; revision=13375
* for hashing/comparing local url's, we ignore trailing /'s in paths (maybe22001-10-031-12/+94
| | | | | | | | | | | 2001-10-02 <NotZed@Ximian.com> * providers/local/camel-local-provider.c (local_url_hash, local_url_equal): for hashing/comparing local url's, we ignore trailing /'s in paths (maybe shuld handle multiple /'s too). (camel_provider_module_init): Use local_url_hash/equal for all functions. svn path=/trunk/; revision=13362
* Go back to using the store url's path, not the toplevel_dir thing.22001-10-031-1/+1
| | | | | | | | | | | | 2001-10-02 <NotZed@Ximian.com> * providers/local/camel-maildir-store.c (get_folder_info): Go back to using the store url's path, not the toplevel_dir thing. * camel-operation.c (camel_operation_progress): Fix the progress logic, so we dont update too often. svn path=/trunk/; revision=13354
* Shoo! Shoo!Dan Winship2001-10-031-6/+0
| | | | svn path=/trunk/; revision=13310
* Remove any cached messages that belonged to the deleted folder.Jeffrey Stedfast2001-10-021-6/+56
| | | | | | | | | | | | | 2001-10-01 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-store.c (delete_folder): Remove any cached messages that belonged to the deleted folder. (subscribe_folder): Don't ever let the info->name be NULL and don't use the stupid concat kludge to generate the URL, just use a CamelURL to do it. This way we don't risk breaking stuff by having a url like imap://fejj@imap//folder svn path=/trunk/; revision=13288
* Fix up the provider flags to specify things more completely so we don'tDan Winship2001-10-021-3/+4
| | | | | | | | | | | | | | * camel-provider.h: Fix up the provider flags to specify things more completely so we don't have to hardcode provider names in the mailer. * providers/local/camel-local-provider.c: MH, mbox, and Maildir are LOCAL. MH and mbox are no longer STORAGE by the new definition. * camel-session.c (vee_provider): The vfolder store is a STORAGE. svn path=/trunk/; revision=13276
* Don't munge the URL; CamelSession's caching relies on it not changing.Dan Winship2001-10-026-42/+33
| | | | | | | | | | | | | | | | | | | | * providers/local/camel-local-store.c (construct): Don't munge the URL; CamelSession's caching relies on it not changing. Instead, add a toplevel_dir field to CamelLocalStore, and set that to the path, but always ending with /. (camel_local_store_finalize): Free toplevel_dir (camel_local_store_get_toplevel_dir): Return toplevel_dir rather than url->path. * providers/local/*: Lots of s/url->path/toplevel_dir/ * providers/local/camel-spool-store.c (construct): Likewise, don't try to strip a trailing / from url->path here, but I didn't make the corresponding toplevel_dir change, because there's no good reason someone should expect "/var/spool/mail/danw/" to work since that's not a directory. svn path=/trunk/; revision=13264
* if STAT returns 0, don't bother sending UIDL. Speeds things up slightlyDan Winship2001-10-011-0/+7
| | | | | | | | | * providers/pop3/camel-pop3-folder.c (pop3_refresh_info): if STAT returns 0, don't bother sending UIDL. Speeds things up slightly and also works around a bug in a particular random POP server. (ximian bug 11369). svn path=/trunk/; revision=13257
* Init the nntp url hash and url_equal functions.Jeffrey Stedfast2001-09-296-4/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-09-28 Jeffrey Stedfast <fejj@ximian.com> * providers/nntp/camel-nntp-provider.c (camel_provider_module_init): Init the nntp url hash and url_equal functions. * providers/sendmail/camel-sendmail-provider.c (camel_provider_module_init): Init the sendmail url hash and url_equal functions. * providers/smtp/camel-smtp-provider.c (camel_provider_module_init): Init the smtp url hash and url_equal functions. * providers/pop3/camel-pop3-provider.c (camel_provider_module_init): Init the pop3 url hash and url_equal functions. * providers/imap/camel-imap-provider.c (camel_provider_module_init): Init the imap url hash and url_equal functions. * providers/local/camel-local-provider.c (camel_provider_module_init): Init the local url hash and url_equal functions. * camel-session.c (camel_session_class_init): Init the vfolder url hash and url_equal functions. * camel-provider.h: Added url_hash and url_equal function pointers to the structure. * camel-vtrash-folder.c (vtrash_move_messages_to): Oops, a CamelFolder is not a CamelFolderClass. svn path=/trunk/; revision=13237
* Grab the store's command_lock before grabbing the folder's cache_lock toDan Winship2001-09-281-2/+15
| | | | | | | | | | | | | | | | * providers/imap/camel-imap-folder.c (camel_imap_folder_fetch_data): Grab the store's command_lock before grabbing the folder's cache_lock to prevent deadlock if another thread is processing an EXPUNGE response. * providers/imap/camel-imap-folder.c (imap_expunge_uids_resyncing): Fix a compiler warning that might point out a real bug... * providers/imap/camel-imap-folder.c (get_content): and one that doesn't svn path=/trunk/; revision=13209
* [Patch for Automake 1.5 compatibility pointed out by RichardEttore Perazzoli2001-09-261-12/+0
| | | | | | | | | | | | Boulton <richard@tartarus.org>, as per #9258.] * providers/nntp/Makefile.am: Remove some commented parts that make Automake 1.5 choke. * Makefile.am (camel-lock-helper): Add $(EXEEXT) for Automake 1.5 compatibility. svn path=/trunk/; revision=13137
* In the 'lose' case, free messages, not fetch_data twice!42001-09-251-1/+1
| | | | | | | | | 2001-09-24 <NotZed@Ximian.com> * providers/imap/camel-imap-folder.c (imap_update_summary): In the 'lose' case, free messages, not fetch_data twice! svn path=/trunk/; revision=13101
* Go back to not using camel_folder_info_build() here because this seems toJeffrey Stedfast2001-09-221-4/+11
| | | | | | | | | | | 2001-09-21 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-store.c (create_folder): Go back to not using camel_folder_info_build() here because this seems to break folder creation (returning nodes from the root path when it shouldn't be?). svn path=/trunk/; revision=13054
* New function to just load the summary. Not much use yet, until unreadMichael Zucci2001-09-211-0/+29
| | | | | | | | | | | | | | | | | | | | | * camel-folder-summary.c (camel_folder_summary_header_load): New function to just load the summary. Not much use yet, until unread counts are stored in the summary (which now looks like too much work!). * camel-mime-utils.c (header_decode_mailbox): Crappy fix for stupid mailers. If we get 'name b. name <foo>' then treat it as '"name b. name" <foo>'. See 8147. (header_decode_mailbox): Another fix for really broken mailers that have things that look like addresses followed by <address> bits. (rfc2047_encode_word): Escape ??= to avoid some bizarre warning about trigraphs. (scan_dir): If we dont have the folder open, then scan the 'new' and 'cur' folders for new and unread messages to count instead. svn path=/trunk/; revision=13040
* Setup unread count properly, and also setup the url properly.Michael Zucci2001-09-212-12/+28
| | | | | | | | | | | | * providers/local/camel-local-folder.c (camel_local_folder_construct): Setup unread count properly, and also setup the url properly. (scan_dir): Dont include empty host part in url for folder. (scan_dir): Lookup folder counts for any folders we currenty have open. svn path=/trunk/; revision=13035
* Build the path on the folderinfo.02001-09-216-15/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-09-20 <NotZed@Ximian.com> * providers/local/camel-maildir-store.c (camel_folder_info_new): Build the path on the folderinfo. * providers/local/camel-spool-store.c (get_folder_info): If we have this folder open, then set unread from the folder itself. (get_folder_info): Change the INBOX path to not include the leading /. * providers/local/camel-spool-folder.c (camel_spool_folder_construct): Fix path. (camel_spool_folder_construct): Properly setup the url field when we say we've got a new folder created. * providers/imap/camel-imap-store.c (unsubscribe_folder): Build path on folderinfo. * camel-store.c (camel_folder_info_build_path): Prepend / to path. * camel-vee-folder.c (camel_vee_folder_construct): Use macro for unmatched folder name. (camel_vee_folder_new): " * camel-vee-store.c (vee_get_folder_info): Use macro for unmatched folder name. (vee_delete_folder): " (vee_rename_folder): " (vee_get_folder): Prepend / onto path. (vee_delete_folder): Setup path in folderinfo. (vee_get_folder_info): Fix path in folderinfo. * camel-vee-folder.h (CAMEL_UNMATCHED_NAME): New define for unmatched (internal) name. svn path=/trunk/; revision=13022
* And finally here.Jeffrey Stedfast2001-09-213-25/+51
| | | | | | | | | | | | | | | | | | | | | | | | | 2001-09-20 Jeffrey Stedfast <fejj@ximian.com> * providers/local/camel-spool-folder.c (camel_spool_folder_construct): And finally here. * providers/local/camel-local-folder.c (camel_local_folder_construct): And here. * camel-vee-store.c (vee_get_folder): ANd here too. (vee_get_folder_info): And here. * providers/imap/camel-imap-store.c (create_folder): Use camel_folder_info_build() and do better error checking. (subscribe_folder): Set the path on the folder info. * camel-store.c (camel_folder_info_build): Set the folder-info path if it hasn't already been set by the caller. (camel_folder_info_free): Free the path. * camel-store.h: Added a path member to the FolderInfo type. svn path=/trunk/; revision=13019
* General cleanup of camel debug printfs.92001-09-195-10/+12
| | | | | | | | | | | | | | | | | 2001-09-19 <NotZed@Ximian.com> * General cleanup of camel debug printfs. * camel-lock.c (camel_lock_fcntl): Changed to return 'success' if the error indicates file locking isn't supported on this filesystem. Still return a warning just incase (if its the first time). Might fix a lot of reported bugs. * providers/local/camel-spool-store.c (get_folder_info): Dont include the empty // host part in the uri. This 'breaks' the service lookup. svn path=/trunk/; revision=12973
* If filter inbox is set on the store, and we're opening inbox '', then82001-09-1913-110/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Don't process the ImapResponse data, we don't want to block forever onJeffrey Stedfast2001-09-181-3/+18
| | | | | | | | | | | | 2001-09-17 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-store.c (delete_folder): Don't process the ImapResponse data, we don't want to block forever on data we don't care about... (create_folder): Use get_folders_online() instead of get_folder_info_online(). svn path=/trunk/; revision=12932
* Don't process the ImapResponse data, we don't want to block forever onJeffrey Stedfast2001-09-181-8/+5
| | | | | | | | | | 2001-09-17 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-store.c (delete_folder): Don't process the ImapResponse data, we don't want to block forever on data we don't care about... svn path=/trunk/; revision=12918
* Do error-checking based on function return values rather than exceptionsJeffrey Stedfast2001-09-141-7/+7
| | | | | | | | | | | 2001-09-13 Jeffrey Stedfast <fejj@ximian.com> * providers/local/camel-mbox-folder.c (mbox_append_message): Do error-checking based on function return values rather than exceptions as it's possible for them to be NULL. (mbox_get_message): Same. svn path=/trunk/; revision=12814
* Pass an exception to the cache. (imap_append_online): Same.Jeffrey Stedfast2001-09-143-33/+56
| | | | | | | | | | | | | | | | | | | | | | 2001-09-13 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (imap_append_offline): Pass an exception to the cache. (imap_append_online): Same. (imap_append_resyncing): Here too. (imap_copy_offline): And here. (handle_copyuid): Pass NULL as the exception here... (parse_fetch_response): And finally here. * providers/imap/camel-imap-message-cache.c (camel_imap_message_cache_insert): (insert_setup): (camel_imap_message_cache_insert_stream): (camel_imap_message_cache_insert_wrapper): (camel_imap_message_cache_copy): Take an exception argument and set it on error. svn path=/trunk/; revision=12813
* Pass in a hashtalbe used for finding visited nodes. (inode_hash):02001-09-111-26/+69
| | | | | | | | | | | | | | | | | 2001-09-10 <NotZed@Ximian.com> * providers/local/camel-maildir-store.c (get_folder_info): Pass in a hashtalbe used for finding visited nodes. (inode_hash): (inode_equal): (inode_free): Helper functions for visited node checks, hashes on inode + device number. (scan_dir): Dont re-visited directories we've already visited, use inodes + device number. Also, if the folder doesn't contain cur/tmp/new, mark it as noselect, but continue to recurse folders, if asked. svn path=/trunk/; revision=12760
* Progress reporting while moving messages.02001-09-111-4/+4
| | | | | | | | | | | | | | | 2001-09-10 <NotZed@Ximian.com> * camel-folder.c (move_messages_to): Progress reporting while moving messages. * camel-store.c (camel_store_delete_folder): Make sure we remove the folder from our vtrash, if we have it in our opened set, and also remove it from our hashtable. (camel_store_rename_folder): Remove the old folder name from the folder cahce, if it is there. svn path=/trunk/; revision=12758
* Forgot to return the newly allocated msg.02001-09-101-0/+2
| | | | | | | | | 2001-09-10 <NotZed@Ximian.com> * providers/imap/camel-imap-store.c (camel_imap_msg_new): Forgot to return the newly allocated msg. svn path=/trunk/; revision=12729
* Likewise.Not Zed2001-09-082-8/+8
| | | | | | | | | | | | | | | 2001-09-08 Not Zed <NotZed@Ximian.com> * providers/local/camel-spool-summary.c (spool_summary_sync_full): Likewise. * providers/local/camel-mbox-summary.c (mbox_summary_sync_full): Fix the wording. * camel-tcp-stream-raw.c (stream_read): Save errno around fcntl call in cancellable read case. Also, loop while we get EINTR. This might fix some weird reconnect behaviour with pop. (stream_write): " svn path=/trunk/; revision=12700
* Make sure to unref the mime filters when we finish with them.Jeffrey Stedfast2001-09-081-0/+2
| | | | | | | | | 2001-09-07 Jeffrey Stedfast <fejj@ximian.com> * providers/smtp/camel-smtp-transport.c (smtp_data): Make sure to unref the mime filters when we finish with them. svn path=/trunk/; revision=12689
* s/Synchronising/Synchronizing/. (mbox_summary_sync_quick): Likewise.Ettore Perazzoli2001-09-081-4/+4
| | | | | | | | | * providers/local/camel-mbox-summary.c (mbox_summary_sync_full): s/Synchronising/Synchronizing/. (mbox_summary_sync_quick): Likewise. (summary_rebuild): s/Summarising/Summarizing/. svn path=/trunk/; revision=12683
* Thread function to perform filtering. (filter_free): Free the filter62001-09-073-3/+123
| | | | | | | | | | | | | | | | | | | | | | | 2001-09-06 <NotZed@Ximian.com> * providers/imap/camel-imap-folder.c (filter_proc): Thread function to perform filtering. (filter_free): Free the filter object. (camel_imap_folder_changed): If we have threads enabled, then queue up a request to perform filtering. For bug #4422. * providers/imap/camel-imap-store.c (camel_imap_msg_new): Create a new 'imap msg'. (camel_imap_msg_queue): Queue an 'imap msg'. (async_received): Handle receiving of imap msg in async thread. (async_destroy): Handle destroying of imap msg. (camel_imap_store_finalize): Destroy thread when done. (camel_imap_store_init): Setup thread. * providers/imap/camel-imap-store.h: Added an ethread to the store, for async processing. svn path=/trunk/; revision=12666
* Fix this to always set an exception if it returns POP3_FAIL, asDan Winship2001-09-072-6/+8
| | | | | | | | | | * providers/pop3/camel-pop3-store.c (pop3_get_response): Fix this to always set an exception if it returns POP3_FAIL, as documented. * providers/pop3/camel-pop3-folder.c (pop3_get_message_stream): Revert. svn path=/trunk/; revision=12654
* Set an exception on POP3_FAIL as well.Jeffrey Stedfast2001-09-071-3/+5
| | | | | | | | | 2001-09-06 Jeffrey Stedfast <fejj@ximian.com> * providers/pop3/camel-pop3-folder.c (pop3_get_message_stream): Set an exception on POP3_FAIL as well. svn path=/trunk/; revision=12653
* #ifdef out the "delete after N days" option in pop3_conf_entries, since itDan Winship2001-09-071-0/+2
| | | | | | | | * providers/pop3/camel-pop3-provider.c: #ifdef out the "delete after N days" option in pop3_conf_entries, since it won't be done for 1.0. svn path=/trunk/; revision=12651
* Do a clean disconnect.Jeffrey Stedfast2001-09-051-1/+1
| | | | | | | | 2001-09-04 Jeffrey Stedfast <fejj@ximian.com> * camel-service.c (camel_service_finalize): Do a clean disconnect. svn path=/trunk/; revision=12593
* Return the default folder (ie. INBOX) rather than saying we don't supportJeffrey Stedfast2001-08-311-3/+1
| | | | | | | | | | 2001-08-30 Jeffrey Stedfast <fejj@ximian.com> * providers/local/camel-spool-store.c (get_inbox): Return the default folder (ie. INBOX) rather than saying we don't support an inbox. svn path=/trunk/; revision=12535
* Add progress reporting to deleting messages. Dont change the calculationNot Zed2001-08-291-2/+9
| | | | | | | | | | 2001-08-29 Not Zed <NotZed@Ximian.com> * providers/pop3/camel-pop3-folder.c (pop3_sync): Add progress reporting to deleting messages. Dont change the calculation to a bloody float. Bug #6189. svn path=/trunk/; revision=12512
* Whoops. Double-free and FMR = bad.Peter Williams2001-08-291-2/+3
| | | | | | | | | 2001-08-28 Peter Williams <peterw@ximian.com> * providers/imap/camel-imap-store.c (create_folder): Whoops. Double-free and FMR = bad. svn path=/trunk/; revision=12505
* Changed the description/names of some of the local providers to try andJeffrey Stedfast2001-08-282-15/+14
| | | | | | | | | | | | | | | 2001-08-27 Jeffrey Stedfast <fejj@ximian.com> * providers/local/camel-local-provider.c: Changed the description/names of some of the local providers to try and clarify the meanings. * providers/pop3/camel-pop3-provider.c: Simplify the POP description - we want short but sweet. * providers/imap/camel-imap-provider.c: s/IMAPv4/IMAP svn path=/trunk/; revision=12486
* s/IMAPv4/IMAPJeffrey Stedfast2001-08-281-1/+1
| | | | | | | | 2001-08-27 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-provider.c: s/IMAPv4/IMAP svn path=/trunk/; revision=12485
* ["Summarising" and "Synchronising" are spelt with a "s" in ENGLISH]Not Zed2001-08-252-8/+8
| | | | | | | | | | | | | | | 2001-08-25 Not Zed <NotZed@Ximian.com> ["Summarising" and "Synchronising" are spelt with a "s" in ENGLISH] * providers/local/camel-mbox-summary.c (mbox_summary_sync_quick): s/Synchronizing/Synchronising/. * providers/local/camel-mbox-summary.c (summary_rebuild): s/Summarizing/Summarising/ svn path=/trunk/; revision=12470
* Revert Not Zed's previous commits as they apparently can cause seriousPeter Williams2001-08-252-5/+5
| | | | | | | | | 2001-08-24 Peter Williams <peterw@ximian.com> * Revert Not Zed's previous commits as they apparently can cause serious data loss for POP3 users. svn path=/trunk/; revision=12461
* s/Synchronising/Synchronizing/.Ettore Perazzoli2001-08-251-3/+3
| | | | | | | | | | * providers/local/camel-mbox-summary.c (mbox_summary_sync_quick): s/Synchronising/Synchronizing/. * providers/local/camel-mbox-summary.c (summary_rebuild): s/Summarising/Summarizing/ svn path=/trunk/; revision=12444
* Likewise.Not Zed2001-08-242-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-08-24 Not Zed <NotZed@Ximian.com> * providers/local/camel-spool-summary.c (summary_rebuild): Likewise. * providers/local/camel-mbox-summary.c (summary_rebuild): Summarising is spelt with an s. 2001-08-23 Not Zed <NotZed@Ximian.com> * camel-mime-part.c (write_to_stream): If we have rawtext, then dont do any charset conversion, only encoding/crlf conversion. * camel-data-wrapper.h (struct _CamelDataWrapper): Added 'rawtext' member, says the character encoding is raw, not utf8. * providers/local/camel-spool-summary.c (spool_summary_sync_quick): Synchronising is spelt with an s, not a z. (spool_summary_sync_full): " * providers/local/camel-mbox-summary.c (mbox_summary_sync_full): No, synchronising is spelt with an s. (mbox_summary_sync_quick): " * camel-mime-part-utils.c (camel_mime_part_construct_content_from_parser): Remove the warnings which aren't going anywhere fast. (convert_buffer): Function to convert a bytearray of textual content from one charset to another. If the charset doesn't exist or fails, then do no conversion. (simple_data_wrapper_construct_from_parser): First, read in data, then try and convert it using the specified charset if supplied. If that fails, then dont do any conversion, and leave as raw. Also, if we have any x-* charsets, then dont do any processing. svn path=/trunk/; revision=12429
* Add a missing \n to the end of a printf.Peter Williams2001-08-242-2/+2
| | | | | | | | | | | 2001-08-23 Peter Williams <peterw@ximian.com> * providers/local/camel-mbox-summary.c (summary_rebuild): Add a missing \n to the end of a printf. * providers/local/camel-spool-summary.c (summary_rebuild): Same. svn path=/trunk/; revision=12421
* oops, don't need that extra statementJeffrey Stedfast2001-08-231-3/+0
| | | | svn path=/trunk/; revision=12386
* Oops. Fixed a mis-use of GPtrArray. If we set_size, then usingJeffrey Stedfast2001-08-231-2/+4
| | | | | | | | | | | 2001-08-22 Jeffrey Stedfast <fejj@ximian.com> * providers/pop3/camel-pop3-folder.c (pop3_generate_uids): Oops. Fixed a mis-use of GPtrArray. If we set_size, then using g_ptr_array_add will assume `size' elements have already been initialized and will start appending on to the end. svn path=/trunk/; revision=12385
* Turn on --batch and reenable gpg keyserver lookups. (pgp_decrypt): DisableJeffrey Stedfast2001-08-221-3/+3
| | | | | | | | | | 2001-08-21 Jeffrey Stedfast <fejj@ximian.com> * camel-pgp-context.c (pgp_verify): Turn on --batch and reenable gpg keyserver lookups. (pgp_decrypt): Disable keyserver lookups if we are disconnected. svn path=/trunk/; revision=12372
* s/Synchronising/Synchronizing/. (mbox_summary_sync_quick): Likewise.Ettore Perazzoli2001-08-202-4/+4
| | | | | | | | | | | * providers/local/camel-mbox-summary.c (mbox_summary_sync_full): s/Synchronising/Synchronizing/. (mbox_summary_sync_quick): Likewise. * providers/local/camel-spool-summary.c (spool_summary_sync_full): Likewise. (spool_summary_sync_quick): Likewise. svn path=/trunk/; revision=12269
* Get the entire directory structure for the folder we just created, meaningJeffrey Stedfast2001-08-203-17/+98
| | | | | | | | | | | | | 2001-08-20 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-store.c (create_folder): Get the entire directory structure for the folder we just created, meaning if we created a folder named "test.mailbox" where test didn't previously exist, get the listing for "test" and "test.mailbox". * providers/imap/camel-imap-utils.c (imap_parse_folder_name): New function. svn path=/trunk/; revision=12258
* Make sure the generated UID is non-NULL before appending it to the arrayJeffrey Stedfast2001-08-201-5/+2
| | | | | | | | | | 2001-08-19 Jeffrey Stedfast <fejj@ximian.com> * providers/pop3/camel-pop3-folder.c (pop3_generate_uids): Make sure the generated UID is non-NULL before appending it to the array of UIDs. How would this even happen? I have no clue... svn path=/trunk/; revision=12225
* Start scanning new messages at maxuid + 1 rather than uidval + 1? MaybeJeffrey Stedfast2001-08-181-35/+35
| | | | | | | | | | 2001-08-17 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (imap_update_summary): Start scanning new messages at maxuid + 1 rather than uidval + 1? Maybe I'm missing the logic, but anyways...this might fix bug #5348. svn path=/trunk/; revision=12170
* If we are online and message flags have changed in the current folder,Jeffrey Stedfast2001-08-174-24/+47
| | | | | | | | | | | | | | | | | | 2001-08-16 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-store.c (imap_keepalive): If we are online and message flags have changed in the current folder, sync the flags else do a NOOP. This fixes bug #4666. Also lock around the NOOP command. * providers/imap/camel-imap-folder.c (imap_sync_online): Don't ever send "STORE FLAGS.SILENT ()" since Cyrus imapd doesn't like this (and maybe others too?) so what we'll do instead is to send "STORE -FLAGS.SILENT (\Seen \Answered \Deleted \Marked)" to clear all the flags (since this is in essence what we want to do anyway). svn path=/trunk/; revision=12136
* Don't ever send "STORE FLAGS.SILENT ()" since Cyrus imapd doesn't likeJeffrey Stedfast2001-08-171-9/+22
| | | | | | | | | | | | | 2001-08-16 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (imap_sync_online): Don't ever send "STORE FLAGS.SILENT ()" since Cyrus imapd doesn't like this (and maybe others too?) so what we'll do instead is to send "STORE -FLAGS.SILENT (\Seen \Answered \Deleted \Marked)" to clear all the flags (since this is in essence what we want to do anyway). svn path=/trunk/; revision=12131
* Fix this again. Sigh. Problem of namespace = "" may not yet be completelyPeter Williams2001-08-171-1/+1
| | | | | | | | | | 2001-08-16 Peter Williams <peterw@ximian.com> * providers/imap/camel-imap-store.c (imap_connect_online): Fix this again. Sigh. Problem of namespace = "" may not yet be completely solved. svn path=/trunk/; revision=12095
* Oh crap, huge killer typo.Peter Williams2001-08-151-1/+1
| | | | | | | | | 2001-08-15 Peter Williams <peterw@ximian.com> * providers/imap/camel-imap-store.c (imap_connect_online): Oh crap, huge killer typo. svn path=/trunk/; revision=12048
* Canonicalize store->namespace to end in store->dir_sep, once both valuesPeter Williams2001-08-151-1/+11
| | | | | | | | | | | 2001-08-14 Peter Williams <peterw@ximian.com> * providers/imap/camel-imap-store.c (imap_connect_online): Canonicalize store->namespace to end in store->dir_sep, once both values are known. The %F-related code makes this assumption. Probably fixes a bug reported on the mailing list. svn path=/trunk/; revision=12040
* We need to be ref'ing the folder if/when we add it to the hash. This mayJeffrey Stedfast2001-08-141-14/+14
| | | | | | | | | | | | | 2001-08-13 Jeffrey Stedfast <fejj@ximian.com> * camel-store.c (camel_store_get_folder): We need to be ref'ing the folder if/when we add it to the hash. This may fix bug #6089? (camel_store_get_folder): Nevermind, reverted the fix. (camel_store_get_folder): No, I wasn't on crack before after all...if we don't ref here, then we're open to a race condition later. svn path=/trunk/; revision=11973
* Fix a leak.Peter Williams2001-08-143-5/+24
| | | | | | | | | | | | | | 2001-08-13 Peter Williams <peterw@ximian.com> * providers/imap/camel-imap-store.c (delete_folder): Fix a leak. * providers/imap/camel-imap-utils.c (imap_namespace_concat): Bleah, handle when namespace = NULL (can happen upon initial open of mailbox.) * providers/imap/camel-imap-command.c (imap_command_strdup_vprintf): Don't crash when %F'ing with an empty folder name and NULL namespace. svn path=/trunk/; revision=11971
* We need to be ref'ing the folder if/when we add it to the hash. This mayJeffrey Stedfast2001-08-142-17/+18
| | | | | | | | | 2001-08-13 Jeffrey Stedfast <fejj@ximian.com> * camel-store.c (camel_store_get_folder): We need to be ref'ing the folder if/when we add it to the hash. This may fix bug #6089? svn path=/trunk/; revision=11968
* s/summarising/summarizing/. (summary_rebuild): Likewise.Ettore Perazzoli2001-08-122-7/+7
| | | | | | | | | | | | | | * providers/local/camel-spool-summary.c (summary_rebuild): s/summarising/summarizing/. (summary_rebuild): Likewise. * providers/local/camel-mbox-summary.c (mbox_summary_sync_full): s/summarise/summarize/. (mbox_summary_sync_quick): Likewise. (summary_rebuild): Likewise. (mbox_summary_check): Likewise. svn path=/trunk/; revision=11919
* Added an assert - at this point a backtrace would be more useful than aJeffrey Stedfast2001-08-112-6/+19
| | | | | | | | | | 2001-08-10 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-utils.c (imap_quote_string): Added an assert - at this point a backtrace would be more useful than a transaction log for debugging. svn path=/trunk/; revision=11902
* Return FALSE here, not NULL.Jeffrey Stedfast2001-08-111-1/+1
| | | | | | | | | 2001-08-10 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-command.c (imap_command_start): Return FALSE here, not NULL. svn path=/trunk/; revision=11893
* tedfast <fejj@ximian.com>Jeffrey Stedfast2001-08-111-4/+4
| | | | | | | | | tedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (imap_rescan): Don't g_strdup() the uid into the trigger_event call. svn path=/trunk/; revision=11892
* Don't g_strdup() the uid into the trigger_event call.Jeffrey Stedfast2001-08-111-17/+17
| | | | | | | | | 2001-08-10 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (imap_rescan): Don't g_strdup() the uid into the trigger_event call. svn path=/trunk/; revision=11891
* Set the total bytes expected to 0 if the response is empty too.Jeffrey Stedfast2001-08-111-3/+4
| | | | | | | | | | | 2001-08-10 Jeffrey Stedfast <fejj@ximian.com> * providers/pop3/camel-pop3-folder.c (pop3_get_message_stream): Set the total bytes expected to 0 if the response is empty too. (pop3_refresh_info): Return of there was an error generating pop3 uids. svn path=/trunk/; revision=11886
* Set the total bytes expected to 0 if the response is empty too.Jeffrey Stedfast2001-08-112-8/+8
| | | | | | | | | 2001-08-10 Jeffrey Stedfast <fejj@ximian.com> * providers/pop3/camel-pop3-folder.c (pop3_get_message_stream): Set the total bytes expected to 0 if the response is empty too. svn path=/trunk/; revision=11885
* A quoted string cannot contain \n's so check for those as well.Jeffrey Stedfast2001-08-104-190/+187
| | | | | | | | | | 2001-08-09 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-utils.c (imap_parse_string_generic): A quoted string cannot contain \n's so check for those as well. (imap_atom_specials): Update this to fix bug #6553. svn path=/trunk/; revision=11845
* Modify to take a headers_only argument which will then only fetch messageJeffrey Stedfast2001-08-071-9/+7
| | | | | | | | | | | | | | | | 2001-08-06 Jeffrey Stedfast <fejj@ximian.com> * providers/pop3/camel-pop3-folder.c (pop3_get_message_stream): Modify to take a headers_only argument which will then only fetch message headers. (pop3_generate_uids): Pass in TRUE for headers_only. (pop3_get_message): Pass in FALSE for headers_only and move the camel_operation() stuff out of get_message_stream and in to here instead. (pop3_generate_uids): We also need to be using i+ 1 as the id since we are starting at 0. svn path=/trunk/; revision=11722
* New internal function to get a message stream by message sequence id (soJeffrey Stedfast2001-08-071-68/+119
| | | | | | | | | | | | | | | | | | | 2001-08-06 Jeffrey Stedfast <fejj@ximian.com> * providers/pop3/camel-pop3-folder.c (pop3_get_message_stream): New internal function to get a message stream by message sequence id (so that we can share code between pop3_get_message and pop3_generate_uids). (pop3_get_message): Use pop3_get_message_stream. (pop3_generate_uids): New function to generate UIDs based on the message - this fixes bug #1256. (pop3_refresh_info): If the server doesn't support UIDL, call pop3_generate_uids to get our list of UIDs. * providers/imap/camel-imap-store.c (get_folder_info_online): Don't strstr for noselect=yes, that's just plain broken. svn path=/trunk/; revision=11721
* Don't strstr for noselect=yes, that's just plain broken.Jeffrey Stedfast2001-08-072-33/+46
| | | | | | | | | 2001-08-06 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-store.c (get_folder_info_online): Don't strstr for noselect=yes, that's just plain broken. svn path=/trunk/; revision=11714
* Fix off-by-one error in cleaning up deleted messages at the end of theDan Winship2001-08-071-1/+1
| | | | | | | | * providers/imap/camel-imap-folder.c (imap_rescan): Fix off-by-one error in cleaning up deleted messages at the end of the folder. Fixes bug #5585 and maybe others. svn path=/trunk/; revision=11712
* Do a refresh_info on the selected folder before looking at its unreadDan Winship2001-08-071-7/+6
| | | | | | | | * providers/imap/camel-imap-store.c (get_folder_info_online): Do a refresh_info on the selected folder before looking at its unread count. Should fix bug #4944. svn path=/trunk/; revision=11710
* Completely hide the namespace from everything external to the IMAP code,Peter Williams2001-08-075-66/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-08-06 Peter Williams <peterw@ximian.com> Completely hide the namespace from everything external to the IMAP code, which Dan W says is the way it should be. * providers/imap/camel-imap-command.c (imap_command_strdup_vprintf): Add a new %F argument, which is like %S but will add the namespace (for folder names). (camel_imap_command): Use %F here. * providers/imap/camel-imap-utils.c (imap_parse_list_response): Changed to strip out the namespec when returning *folder. In order to do this we need to be passed the CamelImapStore. (imap_concat): Move to here from camel-imap-store.c, un-static (imap_namespace_concat): New function, adds the namespace to the folder name, unless it's INBOX. * providers/imap/camel-imap-utils.h: Prototypes. * providers/imap/camel-imap-store.c (imap_connect_online): Extra arg to imap_parse_list_response. (imap_connect_offline): Here too. (get_folder_status): Use %F. (get_folder_online): Here too. (delete_folder): Here too. (create_folder): Here too, and arg to imap_parse_list_response. (parse_list_response_as_folder_info): Arg to i_p_l_r. (get_subscribed_folders_by_hand): Use %F. (get_folders_online): Here too. (get_folder_info_online): Instead of checking for NULL @name, check for name = NULL or "", and set to "" instead of namespace. Pass "" instead of namespace to camel_folder_info_build. (subscribe_folder): Use %F. (unsubscribe_folder): Here too. * providers/imap/camel-imap-folder.c (imap_get_full_name): This now just returns folder->full_name. (do_append): Use %F (do_copy): Here too. svn path=/trunk/; revision=11705
* First check to make sure that service->url->authmech is non-NULL beforeJeffrey Stedfast2001-08-041-14/+14
| | | | | | | | | | 2001-08-03 Jeffrey Stedfast <fejj@ximian.com> * providers/smtp/camel-smtp-transport.c (smtp_connect): First check to make sure that service->url->authmech is non-NULL before passing it into strcmp to avoid a segfault. svn path=/trunk/; revision=11618
* special case popb4smtp auth before we try and connect, and do the magicNot Zed2001-08-032-12/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-08-03 Not Zed <NotZed@Ximian.com> * providers/smtp/camel-smtp-transport.c (smtp_connect): special case popb4smtp auth before we try and connect, and do the magic here first. 2001-08-02 Not Zed <NotZed@Ximian.com> * providers/smtp/camel-smtp-transport.c (smtp_connect): Check for POPB4SMTP separate to the esmtp auth list. (smtp_auth): If creating the sasl object means it is already authenticated, then exit early. Sort of 'clean hack' to help popb4smtp work. (smtp_auth): Unref the sasl object, clean up a memleak i think. * providers/smtp/camel-smtp-provider.c (camel_provider_module_init): Added POPB4SMTP auth type. * camel-sasl.c (camel_sasl_authtype): Added POPB4SMTP type. * camel-sasl-popb4smtp.c: New file for pop before smtp 'authentication'. * Makefile.am (libcamel_la_SOURCES, HEADERS): Add camel-sasl-popb4smtp.[ch]. svn path=/trunk/; revision=11615
* If we fail to get the lock, make sure we close our locking fd, and resetNot Zed2001-08-011-1/+7
| | | | | | | | | | 2001-08-01 Not Zed <NotZed@Ximian.com> * providers/local/camel-mbox-folder.c (mbox_lock): If we fail to get the lock, make sure we close our locking fd, and reset it. Fixes the crash part of 5095. svn path=/trunk/; revision=11538
* Slightly re-arranged filter/change notification logic. If we;re filtering,Not Zed2001-08-011-17/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Send an IMAP command, but don't wait for responses.Dan Winship2001-07-274-233/+483
| | | | | | | | | | | | | | | | | | | | | | | * providers/imap/camel-imap-command.c (camel_imap_command_start): Send an IMAP command, but don't wait for responses. (camel_imap_command_response): Read a single line of response from the server. (camel_imap_command, etc): Reimplement in terms of the new code. * providers/imap/camel-imap-folder.c (imap_rescan): Use camel_imap_command_start and camel_imap_command_response, and call camel_operation_progress after each line read from the server. (imap_update_summary): Likewise, although with more fudging on the precentages... Also, fix this so that if none of the new messages are cached, it only does a single FETCH, and if some of them are cached, it does two FETCHes (one to get the UIDs, FLAGS, and SIZEs, and another to get the bodies of all of the messages that aren't cached now that it knows the relevant UIDs). This should speed up startup a bunch (especially if you have high bandwidth but also high latency to the IMAP server). svn path=/trunk/; revision=11430
* Change the break into a continue, we should process as many as we canNot Zed2001-07-251-1/+1
| | | | | | | | | | | | | | | | 2001-07-24 Not Zed <NotZed@Ximian.com> * providers/imap/camel-imap-folder.c (camel_imap_folder_changed): Change the break into a continue, we should process as many as we can find. * camel-folder.c (camel_folder_move_messages_to): If we have no uid's to copy, exit here before going any further. Some code internally [imap] assumes there are uids to copy otherwise it can segfault. (camel_folder_copy_messages_to): Same. svn path=/trunk/; revision=11392
* Added some operation progress reporting. Actual data transfer is 'tricky'Not Zed2001-07-232-11/+27
| | | | | | | | | | | | | | | | | | | | 2001-07-23 Not Zed <NotZed@Ximian.com> * providers/smtp/camel-smtp-transport.c (smtp_auth, smtp_helo, send_to): Added some operation progress reporting. Actual data transfer is 'tricky' because of the layers used. (smtp_auth): Instead of checking exception_is_set, use challenge==NULL to test if sasl_challenge_base64 failed. * providers/local/camel-mbox-summary.c (mbox_summary_sync): Remove peters changes below and put in a better fix. These functions already return -1 on error, just use that, and not worry about building our own exception redundantly. * camel-service.c (camel_get_host_byname): Turn the progress into a transient event. svn path=/trunk/; revision=11301
* More usage fixes for CamelException. Check our own exception forPeter Williams2001-07-211-2/+6
| | | | | | | | | | 2001-07-20 Peter Williams <peterw@ximian.com> * providers/local/camel-mbox-summary.c (mbox_summary_sync): More usage fixes for CamelException. Check our own exception for summary_update and xfer it out if an error occurred. svn path=/trunk/; revision=11273
* Fixed a compiler warning about returning without a value in a non-voidJeffrey Stedfast2001-07-201-1/+1
| | | | | | | | | | 2001-07-19 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-store.c (create_folder): Fixed a compiler warning about returning without a value in a non-void function. Blah. svn path=/trunk/; revision=11247
* In camel:Peter Williams2001-07-201-29/+140
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-07-19 Peter Williams <peterw@ximian.com> Policy change: NULL url's are no longer allowed in CamelFolderInfos. They used to signify that the folder was, in IMAP jargon, NoSelect; now the same effect is achieved by adding a "noselect=yes" parameter to the end of the URL. As far as I know, IMAP is the only affected provider. * providers/imap/camel-imap-store.c (delete_folder): New function. Implement folder deletion. (camel_imap_store_class_init): Set the delete_folder class function here. (get_folder_status): New function. Utility wrapper around the STATUS command. (create_folder): If the parent folder is NoSelect but is empty, delete it and recreate it as a a subfolder-containing folder. If it is NoSelect but contains messages, set an exception. (parse_list_response_as_folder_info): Always set the FolderInfo's URL, but add a NoSelect parameter if it isn't selectable. (get_folder_info_online): Change logic of removing the namespace to reflect URL change. Same for logic of checking unread counts. (get_folder_info_online): Use get_folder_status to simplify this. * camel-store.c (camel_folder_info_build): When creating dummy parents, copy the child's URL and set the NoSelect parameter. In mail: 2001-07-19 Peter Williams <peterw@ximian.com> Track the NoSelect changes in Camel. * mail-callbacks.c (create_folders): We don't need to check if the URL is NULL or not anymore. * component-factory.c (create_noselect_control): New function. Create a dummy control for folders that can't contain messages (ie \NoSelect) (create_view): If the URI says the folder is noselect, make a dummy control. FIXME: still should merge in the global UI elements. (xfer_folder): Don't allow the operation if the destination is NoSelect. (destination_folder_handle_motion): Ditto. (destination_folder_handle_drop): Ditto. svn path=/trunk/; revision=11237
* Revert 7/11/2001 patch for IMAP INBOX filtering at NotZed's request.Peter Williams2001-07-191-67/+12
| | | | | | | | | 2001-07-19 Peter Williams <peterw@ximian.com> * Revert 7/11/2001 patch for IMAP INBOX filtering at NotZed's request. svn path=/trunk/; revision=11226
* Clean up some exception misusage.Peter Williams2001-07-181-5/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-07-17 Peter Williams <peterw@ximian.com> Clean up some exception misusage. * providers/imap/camel-imap-command.c (camel_imap_command): Use our own internal exception for sending the string and transfer it to @ex if anything goes wrong. (imap_read_response): Use our own internal exception for reading the untagged responses and blah blah blah. * camel-session.c (get_service): Use our own internal exception when constructing the service and transfer it to @ex if anything goes wrong. * camel-remote-store.c (remote_recv_line): Instead of having gboolean exception, use our own internal exception and copy it to @ex if anything goes wrong. * camel-store.c (store_sync): Create an internal exception because sync_folder() checks it for validity. Transfer it to @ex when done. * camel-exception.c (camel_exception_get_description): If @ex is NULL, complain - passing NULL exceptions to Camel is okay, but there should be no circumstances under which they're then examined. (camel_exception_get_id): Same here, (camel_exception_xfer): NULL-protect and warn if transferring from a NULL exception. svn path=/trunk/; revision=11177
* Given: 4 EXISTS 1 EXPUNGE We have to pass 3, not 4 toDan Winship2001-07-171-0/+7
| | | | | | | | | | | * providers/imap/camel-imap-command.c (camel_imap_response_free): Given: * 4 EXISTS * 1 EXPUNGE We have to pass 3, not 4 to camel_imap_folder_changed for the exists count. Fixes ximian bug #2112 (finally!). svn path=/trunk/; revision=11133
* If the message info for an expunged message is NULL, then just break out -Jeffrey Stedfast2001-07-151-0/+6
| | | | | | | | | | | 2001-07-14 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (camel_imap_folder_changed): If the message info for an expunged message is NULL, then just break out - maybe a message was expunged that we were never notified even existed? svn path=/trunk/; revision=11106
* We now use a structure as the bucket data rather than just a cache levelJeffrey Stedfast2001-07-131-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | 2001-07-13 Jeffrey Stedfast <fejj@ximian.com> * camel-uid-cache.c (camel_uid_cache_new): We now use a structure as the bucket data rather than just a cache level so set the save state to TRUE. (maybe_write_uid): We only save the uid if the cache levels are the same *and* if the save state is TRUE. (free_uid): Free the state value. (camel_uid_cache_get_new_uids): New uids that get added to the cache start with a save state of FALSE. (camel_uid_cache_save_uid): Set the save state of the uid to TRUE. What should we do if the uid isn't already in the cache? Currently I make it add the uid, but maybe it shouldn't? * providers/imap/camel-imap-folder.c (imap_filter_timeout): Update to reflect CamelFilterDriver API changes. * camel-filter-driver.c (camel_filter_driver_filter_folder): Take a cache argument so we can tell the cache whether or not the uid should be saved (meaning we have successfully filtered it). svn path=/trunk/; revision=11084
* Removed some code i wasn't supposed to commit.Not Zed2001-07-121-2/+14
| | | | | | | | | | | | | | | 2001-07-12 Not Zed <NotZed@Ximian.com> * camel-folder-summary.c (camel_folder_summary_info_new_from_message): Removed some code i wasn't supposed to commit. * providers/local/camel-local-summary.c (local_summary_add): Only set info->size if it is not zero. (local_summary_add): If we dont get a size from the info passed in, calculate it using a null stream write. Should do #4392. svn path=/trunk/; revision=11025
* Run the filter in its own thread to prevent locking issues.Peter Williams2001-07-121-12/+68
| | | | | | | | | | | 2001-07-11 Peter Williams <peterw@ximian.com> * providers/imap/camel-imap-folder.c (camel_imap_folder_changed): Run the filter in its own thread to prevent locking issues. (imap_filter_timeout): New function that does the filtering called as a CamelSession timeout. svn path=/trunk/; revision=11011
* Create the messageinfo itself, so we can properly set the size.Not Zed2001-07-111-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | 2001-07-11 Not Zed <NotZed@Ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_mbox): Create the messageinfo itself, so we can properly set the size. * camel-movemail.c (camel_movemail_solaris): Write out the from line between each message. 2001-07-10 Not Zed <NotZed@Ximian.com> * providers/local/camel-local-summary.c (local_summary_add): Copy the size across from the source message info if supplied. * camel-stream-null.c: Added a 'written' member which keeps track of how much has been written to the stream. * camel-movemail.c (camel_movemail): If we have BROKEN_SPOOL defined, then use the solaris movemail to quote from lines that sendmail didn't. (camel_movemail_solaris): Compile this in if BROKEN_SPOOL defined. svn path=/trunk/; revision=10989
* Oops, e_poolv_set free's it for us, so dont double-free here.Not Zed2001-07-091-1/+0
| | | | | | | | | 2001-07-09 Not Zed <NotZed@Ximian.com> * providers/local/camel-maildir-summary.c (maildir_summary_sync): Oops, e_poolv_set free's it for us, so dont double-free here. svn path=/trunk/; revision=10902
* Fixes bug #1138.Jeffrey Stedfast2001-07-071-0/+9
| | | | | | | | | 2001-07-06 Jeffrey Stedfast <fejj@ximian.com> * providers/local/camel-maildir-store.c (get_inbox): Fixes bug #1138. svn path=/trunk/; revision=10860
* Make the `day-of-month' digit take up 2 chars by using "%2d". Fixes bugJeffrey Stedfast2001-07-071-1/+1
| | | | | | | | | | | 2001-07-06 Jeffrey Stedfast <fejj@ximian.com> * providers/local/camel-mbox-summary.c (camel_mbox_summary_build_from): Make the `day-of-month' digit take up 2 chars by using "%2d". Fixes bug #3989 for lame mailers like Pine. svn path=/trunk/; revision=10858
* Set the pipe fd's to nonblocking.Jeffrey Stedfast2001-07-071-2/+2
| | | | | | | | | 2001-07-06 Jeffrey Stedfast <fejj@ximian.com> * camel-pgp-context.c (crypto_exec_with_passwd): Set the pipe fd's to nonblocking. svn path=/trunk/; revision=10847
* Add locking to camel_nntp_get_grouplist_from_server().Joe Shaw2001-07-064-2/+35
| | | | | | | | | | | | | | | | | | | | | | 2001-07-06 Joe Shaw <joe@ximian.com> * providers/nntp/camel-nntp-grouplist.c: Add locking to camel_nntp_get_grouplist_from_server(). * providers/nntp/camel-nntp-resp-codes.h: Added NNTP_EXTENSIONS_SUPPORTED (202). * providers/nntp/camel-nntp-store.c (camel_nntp_store_get_extensions): Check for both NNTP_LIST_FOLLOWS and NNTP_EXTENSIONS_SUPPORTED from a LIST EXTENSIONS request. (Dunno if NNTP_LIST_FOLLOWS ever comes out of this, but that's what was already there...) Also, put some locking around it. (finalize): e_mutex_destroy() the command lock (camel_nntp_store_init): e_mutex_new() the command lock. * providers/nntp/camel-nntp-store.h: Add locking macros. svn path=/trunk/; revision=10838
* Added an assert to make sure that `mi' isn't NULL.Jeffrey Stedfast2001-07-061-2/+6
| | | | | | | | | | | | | | 2001-07-05 Jeffrey Stedfast <fejj@ximian.com> * camel-folder-summary.c (camel_message_info_string): Added an assert to make sure that `mi' isn't NULL. (camel_message_info_set_string): Same. * providers/imap/camel-imap-command.c (camel_imap_response_free): Create and use a temporary CamelException for use with camel_imap_folder_changed. svn path=/trunk/; revision=10834
* When indexing a new record, create a pseudo word 'ibexindexed' so we canNot Zed2001-07-051-19/+17
| | | | | | | | | | | | | | | | | | | | | | | 2001-07-05 Not Zed <NotZed@Ximian.com> * camel-folder-summary.c (camel_folder_summary_info_new_from_message): When indexing a new record, create a pseudo word 'ibexindexed' so we can always tell that a message has already been idnexed, even if it contains no words of its own. Things like maildir use this check to see if its already been processed, and it matters if it is incorrect in this case (not just wasted cycles). (camel_folder_summary_info_new_from_parser): And same here. * providers/local/camel-maildir-summary.c (maildir_summary_sync): Changed the logicfor epoolv code to be different, we dont need to update hash references or any tricky stuff. (maildir_summary_check): Samehere. * camel-folder-summary.h: Removed include of e-memory.h. svn path=/trunk/; revision=10785
* Added NNTP_NO_PERMISSION (502) to the list of response codes.Joe Shaw2001-07-042-1/+7
| | | | | | | | | | | | | 2001-07-03 Joe Shaw <joe@ximian.com> * providers/nntp/camel-nntp-resp-codes.h: Added NNTP_NO_PERMISSION (502) to the list of response codes. * providers/nntp/camel-nntp-store.c (nntp_store_connect): If we receive a NNTP_NO_PERMISSION, don't get into an infinite loop trying to reconnect, get extensions, etc. Just give up and return FALSE. svn path=/trunk/; revision=10769
* Doh. Don't remove things from the hash table while foreach'ing it. (AndDan Winship2001-07-032-23/+49
| | | | | | | | | | | | | | | | * providers/imap/camel-imap-message-cache.c (camel_imap_message_cache_clear): Doh. Don't remove things from the hash table while foreach'ing it. (And can't use foreach_remove either because we have to remove them in a weird order). Fixes #3618. * providers/imap/camel-imap-folder.c (imap_get_message): If the server returns OK from the FETCH BODY, but there's no parseable BODY response, it's probably because there's an UN-parseable BODY response, implying the message is badly formatted, MIMEwise. In that case, fall back to fetching the message as a single part. svn path=/trunk/; revision=10748
* Implemented nntp_folder_search_by_expression and nntp_folder_search_free.Sam Creasey2001-07-037-33/+113
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-07-02 Sam Creasey <sammy@oh.verio.com> * providers/nntp/camel-nntp-folder.c: Implemented nntp_folder_search_by_expression and nntp_folder_search_free. Basic search functionality e.g. unread marking now works for NNTP folders. * camel_filter_search.c (get_size): Added get-size sexp directive to get the size of a message for filters. * providers/nntp/camel-nntp-folder.c (camel_nntp_folder_new): Always check with the NNTP server after summary load -- this function now always expires old summary entries and syncs with the news server. * providers/nntp/camel-nntp-utils.c (camel_nntp_get_headers): Only fetch headers for articles not already logged in the summary file. * providers/nntp/camel-nntp-grouplist.c (camel_nntp_get_grouplist_from_*): change from g_list_append() to g_list_prepend() + g_list_reverse. Traversing 40,000 element linked lists sucks. * providers/nntp/camel-nntp-store.c (camel_nntp_command): Should the NNTP connection die with CAMEL_EXCEPTION_SERVICE_NOT_CONNECTED, make a single retry attempt. Timing out the NNTP link is less painful this way. svn path=/trunk/; revision=10716
* new method to get an application-initialized filter driver.Dan Winship2001-07-025-5/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * camel-session.c (camel_session_get_filter_driver): new method to get an application-initialized filter driver. * camel-filter-driver.c (camel_filter_driver_new): Remove the get_folder function and data args from here... (camel_filter_driver_set_folder_func): ...and add this function to set/change them. * providers/imap/camel-imap-folder.c (camel_imap_folder_new): If this folder is INBOX and we're filtering INBOX, set a flag on the folder for later. (imap_update_summary): Add another argument (GPtrArray *recents), and if it's non-NULL, add the uids of any \Recent new messages to it. (camel_imap_folder_changed): If doing filtering in this folder, create a recents array and pass it to imap_update_summary. Then get a filter driver and use it to filter the recent messages. * providers/imap/camel-imap-summary.h: * providers/imap/camel-imap-utils.c (imap_parse_flag_list): Add support for the \Recent flag. * providers/imap/camel-imap-provider.c (imap_conf_entries): enable the "filter" option. * camel-types.h: add CamelFilterDriver typedef here svn path=/trunk/; revision=10681
* sshJose Maria Celorio2001-06-291-0/+6
| | | | svn path=/trunk/; revision=10592
* Add a CamelMimeFilterStripHeader that removes a header from mime output. UsedPeter Williams2001-06-291-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | by sendmail to strip the BCC from the email while still sending to the BCC recipients. camel: 2001-06-28 Peter Williams <peterw@ximian.com> * camel-mime-filter-stripheader.c: New file. Filter that strips a header from mime output. * camel-mime-filter-stripheader.h: New file. Header for the above. * providers/smtp/camel-smtp-transport.c (smtp_data): Use the stripheader filter to remove the "Bcc" header. * Makefile.am: Add the stripheader files. * tests/lib/Makefile.am (INCLUDES): Get this to compile again. * tests/mime-filter/test-stripheader.c: New file. Test suite for the CamelMimeFilterStripHeader. * tests/mime-filter/Makefile.am: New test section: mime filters. mail: 2001-06-28 Peter Williams <peterw@ximian.com> * mail-ops.c (mail_send_message): Revert fejj's Bcc header removal; this unsets the BCC recipients and so doesn't send to the Bcc'd people at all. svn path=/trunk/; revision=10576
* If the folder is frozen, don't refresh, just record that we need to do itDan Winship2001-06-292-5/+41
| | | | | | | | | | | | | | | | | | | * providers/imap/camel-imap-folder.c (imap_refresh_info): If the folder is frozen, don't refresh, just record that we need to do it later. (imap_append_online): If the APPEND doesn't trigger an immediate EXISTS response (because the folder isn't the selected folder, or because the server doesn't do that until the next command), call imap_refresh_info on the folder. (imap_copy_online): Likewise. (Replacing the unconditional NOOP that was there before, which absolutely killed filter performance by forcing the IMAP provider to switch back and forth between folders after every copy or move.) (imap_thaw): If the folder needs a refresh, do it. * camel-folder.c (camel_folder_is_frozen): New method svn path=/trunk/; revision=10565
* lock the cache around accessesDan Winship2001-06-272-5/+14
| | | | | | | | | | | | | * providers/imap/camel-imap-folder.c (camel_imap_folder_selected, imap_append_offline, imap_append_online, camel_imap_folder_changed): lock the cache around accesses * providers/imap/camel-imap-store.c (get_folder_online): ref the newly-created folder (as current_folder) before calling camel_imap_folder_selected, in case that needs to do something that causes another folder to become current... svn path=/trunk/; revision=10509
* g_strdup() the message source here or we will have problems later when weJeffrey Stedfast2001-06-261-2/+2
| | | | | | | | | | 2001-06-25 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-search.c (get_source): g_strdup() the message source here or we will have problems later when we go to free the result ;-) svn path=/trunk/; revision=10498
* Fix this: IMAP doesn't allow an extra argument to AUTHENTICATE to avoid aDan Winship2001-06-252-10/+6
| | | | | | | | | | | | | * providers/imap/camel-imap-store.c (try_auth): Fix this: IMAP doesn't allow an extra argument to AUTHENTICATE to avoid a useless round trip like some other SASL bindings do. * providers/imap/camel-imap-command.c (imap_read_response): Deal with IMAP servers that (incorrectly) return "+\r\n" rather than "+ \r\n" for an empty continuation response. (camel_imap_response_extract_continuation): Likewise. svn path=/trunk/; revision=10480
* Update the copyrights, replacing Helix Code with Ximian andEttore Perazzoli2001-06-2368-118/+118
| | | | | | helixcode.com with ximian.com all over the place. svn path=/trunk/; revision=10440
* Use camel_address_length() rather than casting and accessing data members.Jeffrey Stedfast2001-06-221-3/+3
| | | | | | | | | | 2001-06-21 Jeffrey Stedfast <fejj@ximian.com> * providers/smtp/camel-smtp-transport.c (smtp_send): Use camel_address_length() rather than casting and accessing data members. svn path=/trunk/; revision=10365
* Only create a missing uid if we have indexing turned on.Not Zed2001-06-186-44/+238
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-06-18 Not Zed <NotZed@Ximian.com> * camel-folder-summary.c (camel_folder_summary_info_new_from_parser): Only create a missing uid if we have indexing turned on. * camel-lock-helper.c (setup_process): Function to setup process/sanity/security checks. Change to the real uid as soon as we can. (lock_path): First try to lock as the real uid, if that fails, try the root uid. (unlock_id): Unlock as the uid we created the lock as. * Makefile.am (INCLUDES): Added -DCAMEL_SBINDIR for lock helper location. * providers/local/camel-spool-folder.c (spool_lock): Implemented, using lock helper locking. Need to work out if the locking requires a root created lock? (spool_unlock): Likewise. 2001-06-15 Not Zed <NotZed@Ximian.com> * camel-lock-helper.c: Setuid Lock helper process. Creates and manages .locks, keeping them active, removing them, etc. What real perms it needs is a little system dependent. 2001-06-14 Not Zed <NotZed@Ximian.com> * providers/local/camel-maildir-store.c (get_folder_info): Implement. (scan_dir): Does the work of scanning for maildir directories. 2001-06-13 Not Zed <NotZed@Ximian.com> * providers/local/camel-spool-store.c (get_folder_info): Implemented, just returns a hardcoded INBOX folder. (free_folder_info): implemented, free's the 1 possible level of folder info. * providers/local/camel-spool-folder.c (camel_spool_folder_construct): Set the real unread message count on the folder_created thing. svn path=/trunk/; revision=10261
* Return the largest real UID in the cache (as an integer). Eventually to beDan Winship2001-06-162-0/+19
| | | | | | | | | | * providers/imap/camel-imap-message-cache.c (camel_imap_message_cache_max_uid): Return the largest real UID in the cache (as an integer). Eventually to be used for an optimization in the new-message fetch code. (cache_put): Keep track of max_uid. svn path=/trunk/; revision=10254
* A new provider, for spool mailboxes. Mostly a cut and paste of the mboxNot Zed2001-06-1210-2/+2378
| | | | | | | | | | | | | | | | | | | | | | | | | 2001-06-12 Not Zed <NotZed@Ximian.com> * providers/local/camel-spool-*.[ch]: A new provider, for spool mailboxes. Mostly a cut and paste of the mbox code, but not a subclass CamelLocal*. Not tested a lot, doesn't lock yet, use with extreme caution. * tests/lib/folders.c (test_folder_message_ops): Added spool arg, spool folders can't be deleted, renamed, etc. (test_folder_basic): Same. * tests/folder/test2.c (main): Added checks for spool type. * tests/[message|stream|folder|misc|smime]/Makefile.am (LDADD): Added db3 flags, so make check compiles, doesn't run though. 2001-05-24 Not Zed <NotZed@Ximian.com> * providers/local/camel-local-provider.c (camel_provider_module_init): Added spool provider. svn path=/trunk/; revision=10198
* Don't fetch the UID and FLAGS of messages we don't know about yet, sinceDan Winship2001-06-061-30/+34
| | | | | | | | * providers/imap/camel-imap-folder.c (imap_rescan): Don't fetch the UID and FLAGS of messages we don't know about yet, since they'll just get discarded. svn path=/trunk/; revision=10132
* Remove this evolutionary dead endDan Winship2001-05-3010-1689/+0
| | | | svn path=/trunk/; revision=10042
* Create a CamelDiscoDiary. (imap_disconnect_offline): And free it.Dan Winship2001-05-307-72/+507
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * providers/imap/camel-imap-store.c (imap_connect_online, imap_connect_offline): Create a CamelDiscoDiary. (imap_disconnect_offline): And free it. * providers/imap/camel-imap-folder.c (camel_imap_folder_selected): If RESYNCING, don't do any sort of checking that the remote folder matches the summary, beyond making sure that the UIDVALIDITY is correct. (imap_rescan): Add a missing camel_folder_summary_info_free when removing a UID from the summary. (imap_expunge_uids_offline): Implement. Fairly simple. (imap_expunge_uids_resyncing): Implement. If the store supports UIDPLUS, we can just use imap_expunge_uids_online. If not, we need to temporarily undelete any messages marked deleted on the server that aren't supposed to get expunged. (imap_append_offline): Implement, using cache and summary operations, and triggering the folder_changed event by hand. (imap_append_resyncing): Implement. Redo imap_append_online a bit in the process to make them able to share more code. (imap_copy_offline): Implement. (imap_copy_online): Move parts of this out into a helper. (imap_copy_resyncing): Implement. In most cases this is just like imap_copy_online, but if you are copying a message that was itself copied or appended into the folder, and the server doesn't do UIDPLUS, it will be necessary to replace at least part of the copy operation with one or more appends. * providers/imap/camel-imap-command.c (imap_read_response): Don't record the current folder in the response when in RESYNCING mode. (This means that EXISTS and EXPUNGE responses won't be processed, which is needed because the summary may not match the folder at this point.) (imap_read_response): On error, call camel_imap_response_free_without_processing, not camel_imap_response_free. * providers/imap/camel-imap-utils.c (imap_uid_array_to_set): Make this work better when operating on UIDs that aren't in the summary. * providers/imap/camel-imap-summary.c (camel_imap_summary_add_offline): New routine used by imap_append_offline and imap_copy_offline to create new summary entries. svn path=/trunk/; revision=10041
* Add a "need_rescan" flag saying if we want to rescan the entire folder forDan Winship2001-05-273-24/+43
| | | | | | | | | | | | | | | | | | | | | | * providers/imap/camel-imap-folder.c: Add a "need_rescan" flag saying if we want to rescan the entire folder for flag changes next time it's selected. (camel_imap_folder_init): Set need_rescan TRUE. (camel_imap_folder_selected): If need_rescan is TRUE, call imap_rescan. (imap_refresh_info): Only do a full rescan if need_rescan is TRUE. Otherwise just do a NOOP, making this a MUCH more lightweight operation. Also, don't call imap_rescan directly if the folder isn't selected, since that could end up causing the folder to be scanned *twice* (imap_rescan -> camel_imap_command -> camel_imap_folder_selected -> imap_rescan). (imap_rescan): Set need_rescan FALSE. (imap_sync_online): Don't NOOP if no changes were pushed: the caller will call refresh_info if it wants to poll for changes. Fixes evolution-mail doing lots of unnecessary extra work at quit time. svn path=/trunk/; revision=10010
* Oops. Use a strNcmp to make sure the response begins with a 334 code, notJeffrey Stedfast2001-05-261-1/+1
| | | | | | | | | | 2001-05-25 Jeffrey Stedfast <fejj@ximian.com> * providers/smtp/camel-smtp-transport.c (smtp_auth): Oops. Use a strNcmp to make sure the response begins with a 334 code, not a strcmp. Duh. svn path=/trunk/; revision=10004
* remove the summary info so we are not out-of-sync with the maildir folder.Jeffrey Stedfast2001-05-263-71/+88
| | | | | | | | | | | | | | | | 2001-05-25 Jeffrey Stedfast <fejj@ximian.com> * providers/local/camel-maildir-folder.c (maildir_append_message): remove the summary info so we are not out-of-sync with the maildir folder. * providers/local/camel-mh-folder.c (mh_append_message): remove the summary info so we are not out-of-sync with the mh folder. * providers/local/camel-mbox-folder.c (mbox_append_message): remove the summary info so we are not out-of-sync with the mbox. svn path=/trunk/; revision=9996
* s/folder_deleted/folder_created - result of a bad copy/paste.Jeffrey Stedfast2001-05-241-1/+1
| | | | | | | | | | 2001-05-23 Jeffrey Stedfast <fejj@ximian.com> * providers/local/camel-local-folder.c (camel_local_folder_construct): s/folder_deleted/folder_created - result of a bad copy/paste. svn path=/trunk/; revision=9957
* Optimize the match "" case.Jeffrey Stedfast2001-05-241-17/+30
| | | | | | | | | 2001-05-23 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-search.c (imap_body_contains): Optimize the match "" case. svn path=/trunk/; revision=9955
* Store the CamelFolderInfo tree that was returned fromJeffrey Stedfast2001-05-221-4/+4
| | | | | | | | | | | | | | 2001-05-21 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-store.c (get_folder_info_online): Store the CamelFolderInfo tree that was returned from camel_folder_info_build() in a new variable, 'tree', rather than 'fi' since we later use 'fi' when syncing folders. Not only does this fix a memory leak, but it also fixes the bug where the user would only see the last folder in the folder list and/or it's subfolders. svn path=/trunk/; revision=9911
* Don't check the initial auth response until we get into the while-loopJeffrey Stedfast2001-05-121-9/+13
| | | | | | | | | | | 2001-05-11 Jeffrey Stedfast <fejj@ximian.com> * providers/smtp/camel-smtp-transport.c (smtp_auth): Don't check the initial auth response until we get into the while-loop otherwise we have problems if the SASL mechanism supported a client initiated challenge (like PLAIN and LOGIN do). svn path=/trunk/; revision=9771
* Pass appropriate parameters to CF_CLASS and add comment explaining why myPeter Williams2001-05-101-1/+3
| | | | | | | | | | 2001-05-09 Peter Williams <peterw@ximian.com> * providers/imap/camel-imap-folder.c (imap_move_messages_to): Pass appropriate parameters to CF_CLASS and add comment explaining why my initial attempt at a solution didn't work. svn path=/trunk/; revision=9742
* Set the disconnected status. (camel_disco_store_can_work_offline): ReturnDan Winship2001-05-102-1/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * camel-disco-store.c (camel_disco_set_status): Set the disconnected status. (camel_disco_store_can_work_offline): Return whether or not a given CamelDiscoStore can work offline or not. * camel-disco-folder.c (camel_disco_folder_cache_message): Explicitly tell a folder to cache a message. (Better than using get_message, because for IMAP that doesn't guarantee you'll get all the message parts.) (camel_disco_folder_prepare_for_offline): Prepare a folder for offline use by caching all messages meeting given search criteria (and doing anything else the particular folder implementation needs). * camel-session.c (camel_session_set_online, camel_session_is_online): A session-wide online/offline toggle. (camel_session_init): Set online to TRUE. * providers/imap/camel-imap-store.c (can_work_offline): Implementation of CamelDiscoStore::can_work_offline. (Checks that the store has been used online at least once.) (imap_get_folder_online, imap_get_folder_offline): Deal with request for "inbox" properly. ("Don't you mean... 'INBOX'?"). * providers/imap/camel-imap-folder.c (imap_cache_message): Implementation of CamelDiscoFolder::cache_message. * camel.h: Add camel-disco-store.h and camel-disco-folder.h svn path=/trunk/; revision=9738
* remove something jeff didn't mean to commitDan Winship2001-05-101-1/+1
| | | | svn path=/trunk/; revision=9737
* Wrap the content-id with <>'s.Jeffrey Stedfast2001-05-101-1/+1
| | | | | | | | | 2001-05-09 Jeffrey Stedfast <fejj@ximian.com> * camel-mime-part.c (camel_mime_part_set_content_id): Wrap the content-id with <>'s. svn path=/trunk/; revision=9734
* Add support for using OpenSSL.Jeffrey Stedfast2001-05-082-2/+11
| | | | | | | | | | | | | | | | | | | | | | 2001-05-04 Jeffrey Stedfast <fejj@ximian.com> * providers/smtp/camel-smtp-transport.c (connect_to_server): Add support for using OpenSSL. * camel-remote-store.c (remote_connect): Add support for using the OpenSSL implementation. * camel-tcp-stream-ssl.c (ssl_bad_cert): Hmmmm, don't pass in a NULL as the last argument to alert_user - prototype doesn't take that argument anymore? * camel-tcp-stream-openssl.c (camel_tcp_stream_openssl_finalize): (ssl_verify): Use a global hash table to try and lookup the CamelTcpStreamOpenSSL object given the ssl context since OpenSSL doesn't think one needs to pass data around, we should all be living in a world of global variables, duh! svn path=/trunk/; revision=9697
* Fix up refcounting on current_folder.Dan Winship2001-05-041-2/+6
| | | | | | | | | | * providers/imap/camel-imap-store.c (get_folder_online): Fix up refcounting on current_folder. * camel-disco-folder.c, camel-disco-store.h: Remove CamelDiscoDiary refs that weren't supposed to escape yet. svn path=/trunk/; revision=9667
* new abstract class for disconnectable remote storesDan Winship2001-05-045-508/+481
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * camel-disco-store.c: new abstract class for disconnectable remote stores * camel-disco-folder.c: new abstract class for folders on disconnectable stores. * Makefile.am: Add camel-disco-folder.[ch] and camel-disco-store.[ch]. * providers/imap/camel-imap-store.c: Make this a subclass of CamelDiscoStore, and fix up the offline interfaces for the changes since they were first written (particularly the fact that some IMAP stores don't just use subscribed folders). * providers/imap/camel-imap-folder.c: Make this a subclass of CamelDiscoFolder, although most ops still fail in disconnected mode. * camel-store.c (camel_store_get_folder_info): Change gboolean, gboolean, gboolean to guint32 in the prototype for this function. * providers/local/camel-local-store.c (get_folder_info): Update for prototype change. svn path=/trunk/; revision=9659
* Clean this up a bit. Add a "tag_prefix" member. Move "useful_lsub" intoDan Winship2001-05-033-18/+19
| | | | | | | | | | | | | | | | * providers/imap/camel-imap-store.h: Clean this up a bit. Add a "tag_prefix" member. Move "useful_lsub" into capabilities. * providers/imap/camel-imap-store.c (camel_imap_store_init): Initialize the tag_prefix, based on a static variable. * providers/imap/camel-imap-command.c (camel_imap_command): Use the store's tag_prefix character rather than "A" at the start of the tag. Makes the verbose debug output easier to parse when connected to multiple IMAP servers. (Well, unless you're connected to more than 26 servers...) svn path=/trunk/; revision=9649
* Fix this up... it was losing count in some cases and giving a more verboseDan Winship2001-05-031-14/+8
| | | | | | | | * providers/imap/camel-imap-utils.c (imap_uid_array_to_set): Fix this up... it was losing count in some cases and giving a more verbose answer than it needed to. svn path=/trunk/; revision=9644
* Rescue the KPOP code from bit rot.Dan Winship2001-05-021-23/+16
| | | | | | | * providers/pop3/camel-pop3-store.c: Rescue the KPOP code from bit rot. svn path=/trunk/; revision=9643