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
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
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.
svn path=/trunk/; revision=11969
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
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
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
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
2001-08-10 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (header_raw_check_mailing_list): regfree the
pattern before continue'ing. This was showing up quite a bit under
purify.
svn path=/trunk/; revision=11867
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
2001-08-08 Jon Trowbridge <trow@ximian.com>
* camel-filter-search.c (get_source): Remove trailing stuff from
URLs before returning. (Done in an evil way, not in the good way
suggested by fejj. :)) (Bug #4876)
svn path=/trunk/; revision=11808
2001-08-08 jacob berkman <jacob@ximian.com>
* camel-search-private.c (camel_search_header_match): check for
NULL name and addr (fixes a bug i was about to report)
svn path=/trunk/; revision=11786
2001-08-08 Not Zed <NotZed@Ximian.com>
* camel-filter-search.c (check_header): Properly determine match
type to pass to header_match.
(address_matches_exactly): Removed, effectively added to
camel_search_header_match.
* camel-folder-search.c (check_header): Properly determine the
match type to pass to header_match.
* camel-search-private.c (camel_search_header_match): Add a new
parameter 'type' which is the type of header we're matching
against. ASIS means utf8 format, ADDRESS means an internet
address ('formatted'), ADDRESS_ENCODED means a raw address header,
ENCODED means rfc 2047 encoded text.
(header_match): Move original logic here, have search_header_match
call it as appropriate for the 'type' of match.
2001-08-07 Not Zed <NotZed@Ximian.com>
* camel-session.c (camel_session_class_init): Only init the vee
provider struct once (if we're subclassed this will get called
multiple times).
* camel-object.c (obj_finalize): Removed a bit of a debug that
crept in with jacob's poolv patch (?).
svn path=/trunk/; revision=11772
2001-08-07 Jeffrey Stedfast <fejj@ximian.com>
* camel-filter-search.c (address_matches_exactly): New function to
do danw's address "is" comparison (as specified in bug #5886.
(check_header): Special-case address-type headers when we are
doing an exact match to use the address_matches_exactly function.
svn path=/trunk/; revision=11738
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
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
* 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
* 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
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
2001-08-03 Jeffrey Stedfast <fejj@ximian.com>
* camel-pgp-context.c (pgp_verify): Minor changes to the iconv
code so that it does the check in the return value of iconv() just
like the code in camel-mime-utils.c in case this fixes Bo Rosen's
gpg bugs (but I doubt this will change anything?).
svn path=/trunk/; revision=11622
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
2001-08-03 Jeffrey Stedfast <fejj@ximian.com>
* camel-pgp-context.c (pgp_decrypt): Sigh, if gpg returns '1' it
means that the key is bad but it did succeede in decrypting the
block so to make users happy (even though I find this a
questionable action) we are going to ignore the error and show it
to the user anyway. This fixes bug #6136.
svn path=/trunk/; revision=11617
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
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
2001-08-01 Not Zed <NotZed@Ximian.com>
* providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
Slightly re-arranged filter/change notification logic. If we;re
filtering, freeze the folder till we're finished to smooth the ui
for new mail.
2001-07-31 Not Zed <NotZed@Ximian.com>
* camel-folder.c (camel_folder_init): Chagned mutexes to
e_mutexes, folder lock recursive. This fixes the imap filtering
bug, or at least some cases of it.
(camel_folder_finalize): Free mutexes.
* camel-private.h (CamelFolderPrivate): Changed mutexes to
e_mutexes.
2001-07-25 Not Zed <NotZed@Ximian.com>
* camel-folder.c (camel_folder_change_info_*): Change the
return if fail's into asserts.
(camel_folder_change_info_free): Don't let it accept a NULL
argument. This isn't g_lib so we dont have to.
svn path=/trunk/; revision=11537
2001-07-27 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (header_decode_param): Fix the fix that fixes
broken mailer behavior. We want to make sure that the user's
locale charset is non-NULL before we pass it off to
iconv_open(). If it *is* NULL, we want to use iso-8859-1.
svn path=/trunk/; revision=11448
2001-07-26 Jeffrey Stedfast <fejj@ximian.com>
* camel-url.c (camel_url_free): Allow the url to be NULL just like
the libc free convention.
svn path=/trunk/; revision=11437
* 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
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
2001-07-24 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (header_decode_param): Handle broken mailers
that send unencoded 8bit header params. And there was much
rejoicing. Rah.
svn path=/trunk/; revision=11362
2001-07-24 Jeffrey Stedfast <fejj@ximian.com>
* camel-url.h (CAMEL_URL_HIDE_ALL): New #define, and there was
much rejoicing. Rah.
svn path=/trunk/; revision=11351
2001-07-24 Not Zed <NotZed@Ximian.com>
* camel-operation.c (camel_operation_register, unregister): Added
some warnings for bad cases.
2001-07-23 Not Zed <NotZed@Ximian.com>
* camel-operation.c (camel_operation_register): Only insert a hash
entry if we haven't already.
(camel_operation_unregister): Only remove the has entry if the id
is a real thread.
svn path=/trunk/; revision=11329
2001-07-23 Jeffrey Stedfast <fejj@ximian.com>
* camel-filter-driver.c (do_move): Slight fix for when source ==
destination (we don't want to do this action because on-demand
filtering would then delete the messages it supposedly "moved").
svn path=/trunk/; revision=11304
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
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
2001-07-20 Not Zed <NotZed@Ximian.com>
* camel-charset-map.c (camel_charset_get_iconv_friendly_name):
renamed to camel_charset_to_iconv() to make it just a little more
svn path=/trunk/; revision=11254
2001-07-19 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-filter-charset.c
(camel_mime_filter_charset_new_convert): Convert to the
iconv-friendly charset names.
* providers/imap/camel-imap-store.c (create_folder): Fixed a
compiler warning about returning without a value in a non-void
function. Blah.
* camel-mime-part.c (process_header): Pass the locale charset as
the default_charset to header_decode_string().
* camel-folder-summary.c (camel_folder_summary_format_string):
Pass the locale charset as the default_charset to
header_decode_string().
(content_info_new): Same.
* camel-mime-message.c (process_header): Pass the locale charset
as the default_charset to header_decode_string().
* camel-mime-utils.c (append_8bit): New helper function who's
purpose is similar to append_latin1() but for 8bit text that we
are assuming is not latin1.
(header_decode_text): Now takes a default_charset parameter and
calls append_8bit when appropriate.
(header_decode_string): Also takes a default_charset parameter
now.
(header_decode_mailbox): Pass NULL as the default_charset to
header_decode_string().
svn path=/trunk/; revision=11250
2001-07-19 Jeffrey Stedfast <fejj@ximian.com>
* camel-pgp-context.c (pgp_verify): Modified to treat the return
value from camel_charset_locale_name() as a const char*.
* camel-sasl-digest-md5.c (digest_response): Modified to treat the
return value from camel_charset_locale_name() as a const char*.
* camel-charset-map.c (camel_charset_locale_name): Modify to
return const char* by returning the static locale_charset which is
created inside of camel_charset_map_init().
(camel_charset_map_init): Find the locale charset here and set the
static variable.
svn path=/trunk/; revision=11245
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
2001-07-19 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-part-utils.c
(simple_data_wrapper_construct_from_parser): No need for
`acharset' anymore.
(check_html_charset): Return a const char* and also use
camel_charset_get_iconv_friendly_name() internally.
svn path=/trunk/; revision=11236
2001-07-19 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (rfc2047_decode_word): Remove my iso8859-1 ->
iso-8859-1 hack and use camel_charset_get_iconv_friendly_name()
instead.
(rfc2184_decode): Use camel_charset_get_iconv_friendly_name()
* camel.c (camel_init): Call camel_charset_map_init().
* camel-charset-map.c (camel_charset_map_init): New function to
initialize the charset-equivalent lookup table. To be called by
camel_init().
(camel_charset_get_iconv_friendly_name): New function to try and
convert a charset into something that iconv is more likely to
accept.
svn path=/trunk/; revision=11235
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